gpt4 book ai didi

c++ - 在 opengl 底部重叠矩形和裁剪

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:44 27 4
gpt4 key购买 nike

我必须使用 opengl(旧版本)制作一些 3D 图形。我创建了 3 个相互连接且颜色不同的 GL_POLYGON 矩形。

我的问题是,当图形旋转时,最后添加的颜色(最后添加的矩形)总是在其他颜色之上。比如青色的在粉色和黄色的上面,粉色的在黄色的上面。我还注意到图底部有一些剪裁,我认为这是由 gluPerspective() 引起的。我想要实现的是让眼睛从 z+ 看向中心,图形绕 y+ 轴旋转(我想我设法做到了),并且还删除了重叠和剪裁。

知道为什么会发生这种情况以及如何解决它吗?

代码如下:

#include <GL/glfw.h>

int main()
{
int width, height;
int frame = 0;
bool running = true;

glfwInit();

if( !glfwOpenWindow( 700, 800, 0, 0, 0, 0, 0, 0, GLFW_WINDOW ) )
{
glfwTerminate();
return 0;
}

glfwSetWindowTitle("GLFW Application");

while(running)
{
frame++;

glfwGetWindowSize( &width, &height );
height = height > 0 ? height : 1;

glViewport( 0, 0, width, height );

glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glClear( GL_COLOR_BUFFER_BIT );

glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f );


glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
gluLookAt(0.0f, 0.0f, 40.0f,
0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f );


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


glColor3ub(255,255,0);
glBegin( GL_POLYGON );
glVertex3f(5.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 10.0f, 0.0f);
glVertex3f(5.0f, 10.0f, 0.0f);
glEnd();
glColor3ub(255,0,255);
glBegin( GL_POLYGON );
glVertex3f(5.0f, 0.0f, -2.0f);
glVertex3f(0.0f, 0.0f, -2.0f);
glVertex3f(0.0f, 10.0f, -2.0f);
glVertex3f(5.0f, 10.0f, -2.0f);
glEnd();
glColor3ub(0,255,255);
glBegin( GL_POLYGON );
glVertex3f(5.0f, 0.0f, 0.0f);
glVertex3f(5.0f, 0.0f, -2.0f);
glVertex3f(5.0f, 10.0f, -2.0f);
glVertex3f(5.0f, 10.0f, 0.0f);
glEnd();

glfwSwapBuffers();

running = !glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam( GLFW_OPENED);}

glfwTerminate();

return 0;
}

最佳答案

我在你的代码中没有看到深度特征,尝试寻找depth bufferGL_DEPTH_TEST,如果没有实现,绘制顺序规则..

关于c++ - 在 opengl 底部重叠矩形和裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26743631/

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