c++ - opengl glDepthRange 对象在 Z 深度上消失
问题描述
当 z 深度增加同时围绕 x 轴旋转对象 10 度时,线条消失。我将 glDepthRange 值编辑为 -100,100 或更高,但没有任何变化。我该如何解决这个问题?
void render()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
if( gRenderQuad )
{
glBegin( GL_LINE_LOOP );
glVertex3f(0.3f, 0.5f, 0.4f );
glVertex2f( -0.5f, -0.9f );
glVertex2f( 0.5f, -0.5f );
glVertex2f( 0.5f, 0.5f );
glVertex2f( -0.5f, 0.5f );
glEnd();
}
glDepthRange(-100,100);
glEnable(GL_DEPTH_TEST);
}
解决方案
我将
glDepthRange
值编辑为 -100、100
这是不可能的。深度范围的值必须在 [0.0, 1.0] 范围内。您可以只设置范围 [0.0, 1.0] 的子范围。见glDepthRange
。
如果要增加观看量,则需要使用投影矩阵。正交投影可以设置为glOrtho
:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -100.0, 100.0);
glMatrixMode(GL_MODELVIEW);
推荐阅读
- python - 定期获取函数返回
- kubernetes - 使用 pgadmin 和 gitlab 启用 oauth2
- google-bigquery - 使用 Talend 时出现间歇性 Google Big Query 异常
- java - 为什么不能将数据持久化到数据库中
- react-native - React Native Android TV - 使用遥控器导航时屏幕上的两个元素同时聚焦
- python - Asyncio 第二次使用不同的输入运行相同的任务也会关闭第一个任务
- visual-studio - 编辑 sql 文件时出现光标错误
- reactjs - Why do I have problem rendering this conditional JSX?
- php - 将参数传递给php中的补丁函数
- sql - 出现错误“时间数据比较应具有相同的数据类型”。