使用OpenGL的深度测试遇到始终无效的情况

在尝试实现OpenGL的深度测试时,遇到效果无法显示的问题。通过研究发现,初始化阶段未正确设置深度缓冲区是导致问题的原因。在代码中添加`GLUT_DEPTH`标志来请求深度缓冲区后,深度测试功能恢复正常。以下是修正后的简短示例代码,虽然不规范但能运行并展示深度效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在看大神写的OpenGL教程,结果在显示地球和太阳之间的相对关系时,深度测试效果始终出不来,后来在优快云的另外一篇帖子给了我灵感原来就是在初始化的时候没有申请深度缓冲区?,而且大神的示例代码也没有这个,所以我就被坑了现在贴个示例代码出来(这个代码也是在另外一位大神的及其简短的代码基础上继续改的,不怎么规范但是能使!)`在这里插入代码片#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string.h>
double CalFrequency(void);
void myDisplay(void)
{
double FPS = CalFrequency();
printf(“FPS:%.3lf\n”, FPS);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.0f, 1.0f, 1.0f, 2000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 90.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);


glColor3f(0.7f, 1.0f, 0.3f);
glLineWidth(4);

glBegin(GL_LINES);
glVertex3f(-30.0f, 0.0f, 0.0f);
glVertex3f(30.0f, 0.0f, 0.0f);
glEnd();

glColor3f(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值