gpt4 book ai didi

c++ - glutSolidSphere 没有被点亮

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:24 26 4
gpt4 key购买 nike

当我使用此代码示例时,我得到一个平坦的白色球体。

我期待一个从侧面发光并旋转的球体。

#include <GL/glut.h>
#include <GL/freeglut.h>

int angle = 0;
int _refreshmilliseconds = (1 / 60) * 1000; // 60 frames a second

void timer(int value) {
glutPostRedisplay();
glutTimerFunc(_refreshmilliseconds, timer, 0);
}

void display(void) {
/*
OPEN GL AND GRAPHICS FUNCTIONALITY
*/
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

// Lighting
// Ambient light
GLfloat ambientCol[] = { 1.0f, 0.0f, 0.0f, 1.0f };
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientCol);

// Positioned light
GLfloat lightCol0[] = { 1.0f, 0.0f, 0.0f, 1.0f };
GLfloat lightPos0[] = { 0.5f, 0.0f, 1.0f, 1.0f };

glLightfv(GL_LIGHT0, GL_DIFFUSE, lightCol0);
glLightfv(GL_LIGHT0, GL_POSITION, lightPos0);

// Keyboard-controlled circle, player1
glPushMatrix();
glRotatef(angle, 1.0f, 1.0f, 0.0f);
glutSolidSphere(0.5f, 20, 20);
glPopMatrix();

angle += 2;
if (angle >= 360) { angle = 0; }

glutSwapBuffers();
}

int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);

glutInitWindowSize(400, 400); // Set window size
glutInitWindowPosition(100, 100); // Set window position
glutCreateWindow("Embera 2.0.1"); // Create GLUT window

glutDisplayFunc(display);
glutTimerFunc(0, timer, 0);

glutMainLoop();

return 0;
}

为什么会这样?
enter image description here

最佳答案

问题是我创建的窗口的位置。我的 glEnable 调用都没有启动,因为它们是在我的窗口创建之前放置的。为了解决这个问题,我只是移动了这一行:

glutCreateWindow("Embera 2.0.1");

所以主函数看起来像这样:

int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutCreateWindow("Embera 2.0.1");

glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);

glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);


glutDisplayFunc(display);
glutTimerFunc(0, timer, 0);

glutMainLoop();

return 0;

关于c++ - glutSolidSphere 没有被点亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169658/

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