|
|
请教关于VBO的问题:
GLint face_indicies[6][9] = {
{2,0,3 ,0,0,0 ,0,1,2 }, {1,3,0 ,0,0,0 ,3,2,1 }
, {6,4,7 ,1,1,1 ,0,1,2 }, {5,7,4 ,1,1,1 ,3,2,1 }
, {10,8,11 ,2,2,2 ,0,1,2 }, {9,11,8 ,2,2,2 ,3,2,1 }
};
face_indicies[n]-----第n个三角形
face_indicies[][0-2]----顶点索引
face_indicies[][3-5]----法向索引
face_indicies[][6-8]----贴图坐标索引
GLfloat vertices[12][3] = {
{-252.866f,200.469f,-2.1247e-07f},{-246.616f,211.294f,2.1247e-07f},{-252.866f,200.469f,15.0f},
{-246.616f,211.294f,15.0f},{-246.616f,200.469f,-7.30884e-07f},{-252.866f,211.294f,7.30884e-07f},
{-246.616f,200.469f,15.0f},{-252.866f,211.294f,15.0f},{-255.991f,205.881f,-7.10543e-15f},
{-243.491f,205.881f,-7.10543e-15f},{-255.991f,205.881f,15.0f},{-243.491f,205.881f,15.0f}
};
GLfloat normals[3][3] = {
{0.866025f,-0.5f,0.0f},{0.866025f,0.5f,0.0f},{0.0f,-1.0f,0.0f}
};
GLfloat textures[4][2] = {
{0.0f,2.0f},{0.0f,1.0f},{1.0f,2.0f},
{1.0f,1.0f}
};
BuildVBOs()
{
.......
glGenBuffersARB( 1, &m_nVBOId );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBOId); // Bind The Buffer
glBufferDataARB(GL_ARRAY_BUFFER_ARB, Vertex_num*3*sizeof(float)+Textures_num*2*sizeof(float)+Normals_num*3*sizeof(float), 0, GL_STATIC_DRAW_ARB);
glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, Vertex_num*3*sizeof(float), vertices);
glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, Vertex_num*3*sizeof(float), Textures_num*2*sizeof(float), textures);
glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, Vertex_num*3*sizeof(float)+Textures_num*2*sizeof(float), Normals__num*3*sizeof(float), normals);
.......
}
DRAW()
{
......
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBOId);
glBegin (GL_TRIANGLES);
for(i=0;i<=num_face;i++)
{
for(int j=0;j<3;j++)
{
int vi=face_indicies[j];
int ni=face_indicies[j+3];
int ti=face_indicies[j+6];
glNormal3fv ((float *)0+(Vertex_num*3*sizeof(float)+Textures_num*2*sizeof(float)+ni*3*sizeof(float)));
glTexCoord2fv((float *)0+(Vertex_num*3*sizeof(float)+ti*2*sizeof(float)));
glVertex3fv ((float *)0+(vi*3*sizeof(float)));
}
}
glEnd ();
.......
}
编译通过了,但是执行时总是出错,无法正确绘制,不知道错在哪里?有知道的朋友给提示一下,万分感谢!!! |
|