gpt4 book ai didi

c++ - OpenGL 茶壶绘图错误

转载 作者:行者123 更新时间:2023-11-30 02:49:21 26 4
gpt4 key购买 nike

我一直在研究对象模型,但似乎出了点问题。这是我画茶壶时得到的:

Teapot

如您所见,背景对象出现在前景中,如顶部的圆环。我一直在做所有我能改变的事情,比如裁剪平面和深度缓冲区,但我似乎无法让模型看起来很坚固。我启用了深度和剔除面,我正在清除深度缓冲区和颜色缓冲区。我说不出哪里出了问题。

这是我的代码 list :

void displayLighting() {
if ( specular )
glLightfv(GL_LIGHT0, GL_SPECULAR, specularLight);
else
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);

glLightfv(GL_FRONT, GL_SHININESS, shininess);

lightPos[0] = lightDist*sinf(lightAngle);
lightPos[1] = lightDist;
lightPos[2] = lightDist*cosf(lightAngle);
glLightfv(GL_LIGHT0, GL_POSITION, lightPos );
}

void drawTeapot() {
float diffuseMaterial[] = { 1.f, 1.f, 1.f };
glTranslatef(0.f, -0.f, -0.f);

glShadeModel(GL_SMOOTH);

glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseMaterial);
glutSolidTeapot(20.0f);
}

void renderScene(void) {
glClearColor(0.f,0.f,0.f,1.f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt( zDist*(sinf(yAngle)),zDist*(sinf(xAngle)),zDist*(cosf(xAngle))*(cosf(yAngle)),0,0,0,0,1,0 );

displayLighting();

drawTeapot();

glutSwapBuffers();
}

void changeSize(int width, int height) {
float ratio;

ratio = w * 1.0f / h;

glMatrixMode(GL_PROJECTION);
glViewport(0, 0, w, h);
glLoadIdentity();
gluPerspective(45.0f, ratio, 100.0f, 1000.0f);
glMatrixMode(GL_MODELVIEW);
}

int main(int argc, char **argv) {
// init GLUT and create window
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(0,0);
glutInitWindowSize(800,600);
glutCreateWindow("Teapot");

initLighting();
glutDisplayFunc(renderScene);
glutReshapeFunc(changeSize);
glutIdleFunc(renderScene);

glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glutMainLoop();
}

我很确定这是一个简单的修复,但我希望你们能帮忙。

最佳答案

根据manpage对于 glutSolidTeapot,生成的法线与预期的方向相反。按照建议,使用 glFrontFace(GL_CW)/glFrontFace(GL_CCW) 临时更改面部的默认正面方向。

关于c++ - OpenGL 茶壶绘图错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21289262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com