-
2013. 6. 8. 12:35 Graphic/OpenGL
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 방식이라서 더 빠릅니다
버퍼 는 그래픽카드의 메모리에 자료를 보관 하는것으로, 가속화된 그래픽 처리시 사용하게 됩니다
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 방식이라서 더 빠릅니다