glBegin()을 사용하여 GL_QUADS를 표시하지 않고 VBO로 표시하려고합니다. 불행히도 프로그램을 변경 한 후에는 더 이상 쿼드가 표시되지 않습니다. 내가 보는 모든 것이 검은 색 화면입니다. 그것이 내가하는 일입니다.OpenGl - 버텍스 버퍼 객체가 화면에 그려지지 않음
두 개의 VBO를 정의합니다. 정점 데이터에 대한 하나의, 인덱스 하나와 그 가운데 일부 공간 할당 : 내가 그들을 표시하려고,
float *ptr = (float*)glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_READ_WRITE_ARB);
int *ptrind = (int*)glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_READ_WRITE_ARB);
int nVertexCount=0;
for (...){
*ptr=vertX; ++ptr; *ptrind=nVertexCount; ++ptrind; nVertexCount++;
*ptr=vertY; ++ptr; *ptrind=nVertexCount; ++ptrind; nVertexCount++;
*ptr=vertZ; ++ptr; *ptrind=nVertexCount; ++ptrind; nVertexCount++;
}
glUnmapBufferARB(GL_ARRAY_BUFFER_ARB);
glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB);
을 마지막으로 :
glGenBuffersARB(2, pboIds);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, pboIds[0]);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, 50000*sizeof(GLfloat), 0, GL_STREAM_DRAW_ARB);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, pboIds[1]);
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 50000*sizeof(GLint), 0, GL_STREAM_DRAW_ARB);
그럼 내가 그들을지도하고 그들에게 정보를 기록
을glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawElements(GL_QUADS, nVertexCount, GL_INT, (pboIds+1));
glDisableClientState(GL_VERTEX_ARRAY);
내 프로그램이 잘 컴파일됩니다. 나는 그것을 실행할 때 어떤 충돌도받지 않는다. 하지만 내가 보는 모든 것은 검은 화면입니다. glBegin (GL_QUADS)을 사용했을 때와 마찬가지로 동일한 루틴을 사용하여 정점 좌표를 결정합니다. 그때 나는 화면에 하얀 사각형을 볼 수있었습니다. 어쩌면 내 VBO 코드에서 잘못된 일을하고 있습니까?
편집 : 불행히도 나는 창문 아래 있습니다. ARB 확장 프로그램을 사용하지 않으려면 이러한 작업을 수행해야합니까? I는이 그 예시적인 코드에서 :
#ifdef _WIN32
PFNGLGENBUFFERSARBPROC pglGenBuffersARB = 0;
PFNGLBINDBUFFERARBPROC pglBindBufferARB = 0;
PFNGLBUFFERDATAARBPROC pglBufferDataARB = 0;
PFNGLBUFFERSUBDATAARBPROC pglBufferSubDataARB = 0;
PFNGLDELETEBUFFERSARBPROC pglDeleteBuffersARB = 0;
PFNGLGETBUFFERPARAMETERIVARBPROC pglGetBufferParameterivARB = 0;
PFNGLMAPBUFFERARBPROC pglMapBufferARB = 0;
PFNGLUNMAPBUFFERARBPROC pglUnmapBufferARB = 0;
#define glGenBuffersARB pglGenBuffersARB
#define glBindBufferARB pglBindBufferARB
#define glBufferDataARB pglBufferDataARB
#define glBufferSubDataARB pglBufferSubDataARB
#define glDeleteBuffersARB pglDeleteBuffersARB
#define glGetBufferParameterivARB pglGetBufferParameterivARB
#define glMapBufferARB pglMapBufferARB
#define glUnmapBufferARB pglUnmapBufferARB
#endif
새로운 VBO 코드로 여전히 'glColor()'를 통해 현재 색상을 설정합니까? – genpfault
@genpfault : 나는 어떤 색깔도 설정하지 않는다고 생각합니다. 해야합니까? 편집 : glColor3f (1.0f, 1.0f, 1.0f)로 시도해 보았습니다. 여전히 모든 것은 검은 색이고, GL_QUAD의 흔적은 없습니다. – Fejwin
'for (...) {'여기서'...'는 무엇입니까? –