gpt4 book ai didi

ios - OpenGLES 2.0(GLKit,iPhone): Polygons partially obscure wireframe lines

转载 作者:行者123 更新时间:2023-11-28 23:09:29 25 4
gpt4 key购买 nike

我正在尝试为 iOS 创建一个 3D 函数绘图仪。我已经成功地使用三角形带渲染了图形,并且还实现了通过线条绘制线框。但是,如果我使用 24 位(或 16 位无关紧要)深度缓冲区同时渲染两者,则线条会被多边形部分遮挡,使它们显得非常细或完全消失。关闭 4xMSAA 并不能解决问题。有关示例,请参见下图。

example of partially obscured lines

只绘制线条效果很好 - 线条的粗细恰到好处。如果我为线条禁用深度缓冲,它们也会被正确绘制,但它们当然会出现在所有多边形之上(即确实被多边形隐藏的线条)。我也曾尝试降低多边形的透明度,但无济于事。稍微增加线条的 y 坐标会使它看起来更好,只要您从上方看它们,那么它们确实位于多边形的前面。

为了获得最佳性能,我在渲染之前将所有顶点数据和索引静态存储到顶点数组中。因此,我的渲染循环非常短:

- (void)drawRect:(CGRect)rect
{
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

[self.effect prepareToDraw];

for (NSUInteger i = 0; i < _nVertexArrays; i ++)
{
glBindVertexArrayOES(_vertexArrays[i].vertexArray);
glDrawElements(_vertexArrays[i].mode, _vertexArrays[i].indexCount, GL_UNSIGNED_INT, NULL);
}
}

如何同时正确显示多边形和线框?我还想过将线移得更靠近相机现在恰好所在的位置,但我不知道如何在 OpenGL ES 中执行此操作,而且我不确定它是否会影响性能,因为这种转变取决于相机的当前位置。是否可以在绘制线条之前对其动态应用转换?

最佳答案

查看 glPolygonOffset .它是专门为此用途而制造的。

关于ios - OpenGLES 2.0(GLKit,iPhone): Polygons partially obscure wireframe lines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8637494/

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