通过 OpenGL 绘制的立方体可见线框,有什么想法吗?

发布于 2024-10-23 12:56:22 字数 615 浏览 8 评论 0原文

我是 OpenGL/ES 和 OpenTK 的新手,所以如果我的理解/术语有点偏差,请原谅我。

基本上,

  1. 我使用顶点缓冲区对象数组(VBO)绘制一系列基于[白色]三角形的立方体。
  2. 然后,我使用相同的顶点来渲染立方体的[黑色]线框,使用线条和线条。多边形偏移()。
  3. 问题是,我可以看到背面渲染的线框(即透视),我不确定为什么(?)。
  4. 我使用的是 4 值颜色(rgba),我对第四个值(alpha/不透明度)所做的任何事情似乎都不起作用。

已经为基于三角形的立方体部分定义了法线,总共 36 个(2 x 3 顶点/三 x 6 边),但是,我尚未为线框线段定义任何法线(目前)。

有谁知道我可能做错了什么,仅仅基于 OpenGL 陷阱/经验。

JFYI,我在 mono/monotouch (C#) PS 上使用 OpenTK-OpenGL ES11

PS 如果你是想知道为什么我没有发布任何代码,那是因为渲染代码与游戏逻辑混合并分布在多个文件中。如果有必要,我会尽快尝试制作一个简单的、独立的示例。

I'm a newbie to OpenGL/ES and OpenTK, so forgive me if my understanding/terminology is a little off.

Basically,

  1. I'm drawing a series of [white] triangle-based-cubes using a Vertex Buffer Object Array (VBO's).
  2. I then use the same vertices to render a [black] wireframe for the cubes, using lines & polygonOffset().
  3. Problem is, I can see the wireframes that are rendered on the back-faces (i.e. see through), I'm unsure why (?).
  4. I'm using 4-value colours (rgba), nothing I do to the 4th value (alpha/opacity) seems to do anything.

I have defined normals for the triangle-based cube sections, a total of 36 (2 x 3 verts/tri x 6 sides), however, I haven't defined any normals for the wireframe line segments (at present).

Does anyone have any idea of what I might be doing wrong, solely based on OpenGL pitfalls/experience.

JFYI, I'm using OpenTK-OpenGL ES11 on mono/monotouch (C#)

P.S. If you're wondering why I haven't posted any code, that is because the rendering code is mixed with game logic and spread across multiple files. I'll try to make a simple, self contained example as soon as I can, if necessary.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不寐倦长更 2024-10-30 12:56:22

确保您已开启深度测试。即使组成线和点的片段也经过深度测试,因此如果您在线前面绘制了形状,则形状应该遮挡线。

您想要查看带有参数GL_DEPTH_TESTglEnable 函数。

Make sure that you have depth testing turned on. Even the fragments composing lines and points get depth tested, so if you have shapes drawn in front of lines, the shapes should occlude the lines.

You want to look at the glEnable function with parameter GL_DEPTH_TEST.

还不是爱你 2024-10-30 12:56:22

假设 GL.EnableClientState 是 glEnableClientState 的直接模拟,这不是启用多边形偏移的方式。是否有相当于 glEnable 的东西?
以下方法可以帮助我获得可见的线框:

 glEnable( GL_POLYGON_OFFSET_FILL );
 // push back the filled faces a touch
 glPolygonOffset( 1, 1 );
 // draw filled faces
 ...
 glDisable( GL_POLYGON_OFFSET_FILL );
 // draw wireframe
 ...

Assuming that GL.EnableClientState is a direct analog of glEnableClientState, this is not how polygon offset is enabled. Is there an equivalent of glEnable?
The following works for me to get a visible wireframe:

 glEnable( GL_POLYGON_OFFSET_FILL );
 // push back the filled faces a touch
 glPolygonOffset( 1, 1 );
 // draw filled faces
 ...
 glDisable( GL_POLYGON_OFFSET_FILL );
 // draw wireframe
 ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文