OpenGL glGenLists返回 0 为什么呢
文西
领域专家: 算法与数据结构技术领域 2009-12-25 02:52:06 小弟学习Opengl 要绘制三角网格的面和每个面的边 因为我每次调用面的材质和边的材质设置计算会很慢
想优化一下所以使用 list 但是 glGenLists返回 0。 而0 是说明没有成功执行list的生成。帮我看看吧 可能就是个小地方没有想到谢谢了
// 有色面
void COpenGLView::SetFaceMaterial()
{
GLfloat material_Ka[] = {0.11,1.0,0,11,1.00};
GLfloat material_Kd[] = {0.43,1.0,0.54,1.00};
GLfloat material_Ks[] = {0.33,1.0,0.54,1.00};
GLfloat material_Ke[] = {0.00,0.0,0.00,1.00};
GLfloat material_Se[] = {10.0};
glMaterialfv(GL_FRONT,GL_AMBIENT,material_Ka);
glMaterialfv(GL_FRONT,GL_DIFFUSE,material_Kd);
glMaterialfv(GL_FRONT,GL_SPECULAR,material_Ks);
glMaterialfv(GL_FRONT,GL_EMISSION,material_Ke);
glMaterialfv(GL_FRONT,GL_SHININESS,material_Se);
}
// 设置边框线的材质 黑线
void COpenGLView::SetLineMaterial()
{
GLfloat material_Ka[] = {0.0f,0.0f,0.0f,1.0};
GLfloat material_Kd[] = {0.0f,0.0f,0.0f,1.0};
GLfloat material_Ks[] = {0.0f,0.0f,0.0f,1.0};
GLfloat material_Ke[] = {0.0f,0.0f,0.0f,1.0};
GLfloat material_Se[] = {10.0};
glMaterialfv(GL_FRONT,GL_AMBIENT,material_Ka);
glMaterialfv(GL_FRONT,GL_DIFFUSE,material_Kd);
glMaterialfv(GL_FRONT,GL_SPECULAR,material_Ks);
glMaterialfv(GL_FRONT,GL_EMISSION,material_Ke);
glMaterialfv(GL_FRONT,GL_SHININESS,material_Se);
}
int COpenGLView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
m_selected =false; //文件还没有选取
// 将线纹理的处理保存在 list里
m_list_line = glGenLists(1);
glNewList(m_list_line,GL_COMPILE);
SetLineMaterial();
glEndList();
// 将 面的处理放在 list中
m_list_face = glGenLists(1);
glNewList(m_list_face,GL_COMPILE);
SetFaceMaterial();
glEndList();
InitializeOpenGL();
return 0;
}