社区
图形处理/算法
帖子详情
请教opengl深度范围太大,glfloat精度不够如何解决
darkccc
2011-09-15 11:06:29
opengl中设置视窗的far和near的问题。
如果要绘制地球场景,地球半径约为6700km,由于float精度为7有效数字,则精度大约为1m,如果要同时在场景中绘制其他1m量级的物体,由于深度检测时精度不够,距离近的面会出现闪烁。
请问这种情况该怎么解决
...全文
375
2
打赏
收藏
请教opengl深度范围太大,glfloat精度不够如何解决
opengl中设置视窗的far和near的问题。 如果要绘制地球场景,地球半径约为6700km,由于float精度为7有效数字,则精度大约为1m,如果要同时在场景中绘制其他1m量级的物体,由于深度检测时精度不够,距离近的面会出现闪烁。 请问这种情况该怎么解决
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fandh
2011-09-16
打赏
举报
回复
存储的数据,放大N倍后存储!
向立天
2011-09-16
打赏
举报
回复
用double或long double
不过有必要这么模拟么?
反正画到屏幕上都是相对的
你也可以按比列缩放啊
Open
GL
3.3
深度
测试
这一篇主要是讲解
深度
测试时怎么工作的 一般
深度
缓冲的
精度
值都是24位
float
存储
深度
缓冲是由窗口系统自动创建的 (具体原理): 如果
深度
测试开启了,则
Open
GL
会将一个片段的
深度
值和
深度
缓冲中的内容做对比
Open
GL
会执行一个
深度
测试,如测试通过,
深度
缓冲会更新为新的
深度
值。如果
深度
测试失败,片段会被丢弃
gl
Clear(
GL
_COLOR_BUFFER_BIT |
GL
_DEPTH_BUF......
Open
GL
深度
测试
深度
其实就是该像素点在3D世界中距离观察者的距离—Z值。
深度
缓存区,就是⼀块内存区域,专⻔门存储着每个像素点(绘制在屏幕上的)
深度
值。
Open
GL
:关于获取渲染结果的
深度
信息的问题(二)
前面记录了一下存在的问题和大致的
解决
方法
Open
GL
:关于获取渲染结果的
深度
信息的问题_六月的翅膀的博客-CSDN博客 下面就验证一下 先定义一个指针变量和一个成员函数
GL
float
* depth_value = NULL;//保存缓冲区里的
深度
信息 void updateDepthValue(); 成员函数具体为 void
Gl
Widget::updateDepthValue() { int WINDOW_WIDTH = (int)_width; int WIND..
Open
GL
(二十一)
gl
PolygonOffset设置
深度
偏移
解决
z-fighting闪烁问题
开启
深度
测试后
Open
GL
就不会再去绘制模型被遮挡的部分,这样实现的显示画面更为真实,但是由于
深度
缓冲区
精度
的限制,对于
深度
相差非常小的情况(例如在同一平面上进行两次绘制),
Open
GL
就不能正确判定两者的
深度
值,会导致
深度
测试的结果不可预测,显示出来的现象时交错闪烁的前后两个画面,这种情况称为z-fighting,在旋转(
深度
值发生变化)的情况下表现的更为明显,如下图所示:
Open
GL
编程 基础篇(六)
Open
GL
中几种光照参数
一、定义 1.
GL
_AMBIENT:环境光,经过很多次反射后最终遗留在环境中的光线强度(颜色)。 2.
GL
_DIFFUSE:漫反射,表示光线照射到该材质上,经过漫反射后形成的光线强度(颜色)。 3.
GL
_SPECULAR:镜面反射,表示光线照射到该材质上,经过镜面反射后形成的光线强度(颜色)。 注:通常,
GL
_AMBIENT和
GL
_DIFFUSE都取相同的值,可以达到比较真实的效果。使用G...
图形处理/算法
19,469
社区成员
50,697
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章