在OpenGL中,我在正交投影中画了一个透明的立方体,环境有一个前缘。结果如图所示。我不明白的是,为什么会有缺失的边缘?
gl.Enable(OpenGL.GL_BLEND); gl.BlendFunc(OpenGL.GL_SRC_ALPHA, OpenGL.GL_ONE_MINUS_SRC_ALPHA);
我使用了一个使用索引的DrawElements()函数。有什么建议吗?
aamkag611#
这是由深度测试引起的。OpenGL一次渲染一个三角形(或正方形)。启用深度测试时,如果已在像素前面渲染了某个像素,则会跳过该像素的渲染。这对实体对象很好,但对透明对象不起作用,因为必须首先渲染背面部分,否则它们根本不会被渲染。实现透明度的方法有很多,但没有一种特别好。不幸的是,无论你用哪种方式切片,透明的物体都不像不透明的物体那样容易渲染。下面是一些让事物变得透明的方法:
vwoqyblh2#
我将其解析为用户253751,并将其归结为指令:
gl.Enable(OpenGL.GL_DEPTH_TEST); gl.DepthFunc(OpenGL.GL_ALWAYS);
2条答案
按热度按时间aamkag611#
这是由深度测试引起的。OpenGL一次渲染一个三角形(或正方形)。启用深度测试时,如果已在像素前面渲染了某个像素,则会跳过该像素的渲染。这对实体对象很好,但对透明对象不起作用,因为必须首先渲染背面部分,否则它们根本不会被渲染。
实现透明度的方法有很多,但没有一种特别好。不幸的是,无论你用哪种方式切片,透明的物体都不像不透明的物体那样容易渲染。
下面是一些让事物变得透明的方法:
vwoqyblh2#
我将其解析为用户253751,并将其归结为指令: