C++ OpenGL-没有灯光的平面明暗处理C++;
我已经实现了一个网格。线框渲染(三角形)还可以,但现在我想应用平面着色渲染,得到的是一个没有体积的图形,纯白色 以下是我使用的:C++ OpenGL-没有灯光的平面明暗处理C++;,c++,opengl,C++,Opengl,我已经实现了一个网格。线框渲染(三角形)还可以,但现在我想应用平面着色渲染,得到的是一个没有体积的图形,纯白色 以下是我使用的: for(int i=0; i<mesh->nt; i++) { glShadeModel(GL_FLAT); glBegin(GL_TRIANGLES); int i0 = mesh->triangles[i].vInds[0]; int i1 = mesh->triangles[i].vInds[1];
for(int i=0; i<mesh->nt; i++) {
glShadeModel(GL_FLAT);
glBegin(GL_TRIANGLES);
int i0 = mesh->triangles[i].vInds[0];
int i1 = mesh->triangles[i].vInds[1];
int i2 = mesh->triangles[i].vInds[2];
Vector n1 = GetNormal(mesh->vertices[i0], mesh->vertices[i1], mesh- >vertices[i2]);
glNormal3dv((double *)&n1);
glVertex3dv((double *)&mesh->vertices[i0]);
glVertex3dv((double *)&mesh->vertices[i1]);
glVertex3dv((double *)&mesh->vertices[i2]);
glEnd();
}
for(int i=0;int;i++){
glShadeModel(GLU平面);
glBegin(GL_三角形);
int i0=网格->三角形[i].vInds[0];
int i1=网格->三角形[i].vInds[1];
int i2=网格->三角形[i].vInds[2];
向量n1=GetNormal(网格->顶点[i0],网格->顶点[i1],网格->顶点[i2]);
glNormal3dv((双*)&n1);
glVertex3dv((双*)&网格->顶点[i0]);
glVertex3dv((双*)&网格->顶点[i1]);
glVertex3dv((双*)&网格->顶点[i2]);
格伦德();
}
我计算了三角形的法线,但没有任何效果。有什么想法吗?如果没有启用灯光/照明,三角形将不会着色。就这么简单。也许这样更好
glEnable(GL_LIGHTING);
glShadeModel(GL_FLAT);
glBegin(GL_TRIANGLES); // <-- start triangles before the loop, much faster
for(int i=0; i<mesh->nt; i++)
{
int i0 = mesh->triangles[i].vInds[0];
int i1 = mesh->triangles[i].vInds[1];
int i2 = mesh->triangles[i].vInds[2];
Vector n1 = GetNormal(mesh->vertices[i0],
mesh->vertices[i1],
mesh->vertices[i2]);
glNormal3dv((double *)&n1);
glVertex3dv((double *)&mesh->vertices[i0]);
glVertex3dv((double *)&mesh->vertices[i1]);
glVertex3dv((double *)&mesh->vertices[i2]);
}
glEnd();
glEnable(GL_照明);
glShadeModel(GLU平面);
glBegin(GL_三角形);//三角形[i].vInds[0];
int i1=网格->三角形[i].vInds[1];
int i2=网格->三角形[i].vInds[2];
向量n1=GetNormal(网格->顶点[i0],
网格->顶点[i1],
网格->顶点[i2];
glNormal3dv((双*)&n1);
glVertex3dv((双*)&网格->顶点[i0]);
glVertex3dv((双*)&网格->顶点[i1]);
glVertex3dv((双*)&网格->顶点[i2]);
}
格伦德();
作为旁注,我建议您阅读类似“如果您想学习现代OpenGL编程”。您正在使用的函数已弃用!