gpt4 book ai didi

c++ - 如何使用 glut 和 openGL 改变颜色?

转载 作者:行者123 更新时间:2023-11-30 02:40:44 25 4
gpt4 key购买 nike

我正在尝试自学在没有用户输入的情况下为对象制作动画,到目前为止,我已经弄清楚了如何使场景旋转。我如何让一个对象改变颜色呢?我以为我的代码可以做到这一点,但它仍然是一个白色三角形(甚至没有不同的颜色)。

如何让它在三角形或透视图旋转的同时改变颜色?

这是我当前的代码:

#include <GL/glut.h>

float color1;
float color2;
float color3;

void changeSize(int w, int h) {

// Prevent a divide by zero, when window is too short
// (you cant make a window of zero width).
if (h == 0)
h = 1;

float ratio = w * 1.0 / h;

// Use the Projection Matrix
glMatrixMode(GL_PROJECTION);

// Reset Matrix
glLoadIdentity();

// Set the viewport to be the entire window
glViewport(0, 0, w, h);

// Set the correct perspective.
gluPerspective(45.0f, ratio, 0.1f, 100.0f);

//changeColor?
color1 += 0.1f;
color2 += 0.3;
color3 += color2;
if (color1 > 1.0)
color1 = 0;
if (color2 > 1.0)
color2 = 0;
if (color3 > 1.0)
color3 = 0;

// Get Back to the Modelview
glMatrixMode(GL_MODELVIEW);
}

float angle = 0.0f;

void renderScene(void) {

// Clear Color and Depth Buffers
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// Reset transformations
glLoadIdentity();
// Set the camera
gluLookAt(0.0f, 0.0f, 10.0f,
0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f);

glRotatef(angle, 0.0f, 1.0f, 0.0f);

glBegin(GL_TRIANGLES);
glColor3f(color1, color2, color3);

glVertex3f(2.0f, -2.0f, 0.0f);
glVertex3f(2.0f, 0.0f, 0.0);
glVertex3f(0.0f, 2.0f, 0.0);
glEnd();

angle += 0.1f;
color1 += 0.1f;
color2 += 0.3;
color3 += color2;

glutSwapBuffers();
}

int main(int argc, char **argv) {

// init GLUT and create window
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(320, 320);
glutCreateWindow("tutorial example");

// register callbacks
glutDisplayFunc(renderScene);
glutReshapeFunc(changeSize);

glutIdleFunc(renderScene);

// enter GLUT event processing cycle
glutMainLoop();

return 1;
}

最佳答案

浮点颜色必须在 [0,1] 范围内,并且您只需向值中添加一些内容并且永远不会将其重置为零,因此它在前 10 帧中变得大于 1(=非常快),OpenGL 将其固定到 1,所以你看到它是白色的。

changeSize 中的那一堆 if 实际上应该在 renderScene 中。

关于c++ - 如何使用 glut 和 openGL 改变颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28703436/

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