1. 2013. 6. 8. 12:35 Graphic/OpenGL
http://www.opengl.org/wiki/GLAPI/glGenBuffers
glGenBuffers 함수를 통한 버퍼 생성 방법 입니다
버퍼 는 그래픽카드의 메모리에 자료를 보관 하는것으로, 가속화된 그래픽 처리시 사용하게 됩니다

glGenBuffers( [생성할 버퍼 개수 integer], [버퍼 변수 array of GLuint] )

C++
GLuintbuffer[10];
glGenBuffers(10,&buffer[0])
Pascal
var buffer: array [0..9] of 
GLuint;
glGenBuffers(10,@buffer[0])

사용은 대략 아래처럼요
빈 버퍼 생성   glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buffer[0]);   glBufferData(GL_PIXEL_UNPACK_BUFFER,1920*1080*3, nil, GL_STATIC_DRAW);

[참고: 데이터는 FillMemory 로 대신 썻어요]
빈 버퍼에 새 값을 넣고 싶다면, system -> video
  FillMemory(b.RawImage.Data,1920*1080*2,127);   glBufferSubData(GL_PIXEL_UNPACK_BUFFER,0,1920*1080*3,b.RawImage.Data);

빈 버퍼에 새 값을 바로 올리고 싶다면 Direct Access Memory (DMA)   pointer := glMapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY);   FillMemory(p,1920*1080*2,127);   glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
  [주의사항: 언매핑 요청 후에 해당 메모리를 조작 하지 마세요]

버퍼의 데이터를 가져오기
  glGetBufferSubData(GL_PIXEL_UNPACK_BUFFER,0,1920*1080*3,b.RawImage.Data);

매핑이 DMA 방식이라서 더 빠릅니다


Posted by Nightly Luna
,
® © Tanny Tales
/ rss