首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Opengl绘制立方体边

Opengl绘制立方体边
EN

Stack Overflow用户
提问于 2022-03-02 15:34:48
回答 1查看 743关注 0票数 1

我能够用现代opengl绘制一个简单的立方体,但我希望能够从我用(顶点)绘制的数据中绘制一个直线立方体:

目前,我正在绘制一个立方体,并使用glPolygonMode绘制线条,但我想去掉通过每个四面的线条(实质上只是绘制立方体的边缘)。

我无法得到更多,我不知道如何处理这个主题(着色器,或其他一些opengl方法)

我怎么能这样画一个立方体呢?

EN

Stack Overflow用户

回答已采纳

发布于 2022-03-03 10:17:26

最简单的方法是在渲染四边形时仍然使用glPolygonMOde(...),而不是三角形。然而,这需要更改您的数据..。

如果你的网格总是由四边形和三角形组成,那么两个后续三角形总是形成一个四边形,但是你不愿意切换到四边形,那么你可以编写一个几何着色器,包含6个顶点并输出4行,这些行仍然或多或少是“快速”的,但是请注意,在过去不太可靠的几何图形着色器.

如果这些不是选项,您可以修改以下内容:

使碎片接近于剧烈的正常变化。然而,这将隐藏背面,因此,为了让它们也这样做,您必须在两次传递中完成,一次使用glFrontFace(GL_CW);,另一次使用glFrontFace(GL_CCW);,结合它们的输出。这也允许你为隐藏的边缘设置不同的颜色..。

所以我看到它是这样的:

代码语言:javascript
运行
复制
glFrontFace(GL_CW);
render_mesh_to_trexture();     // using normal instead of color
render_siluete_from_texture(); // using texture from previous line

glFrontFace(GL_CCW);
render_mesh_to_trexture();     // using normal instead of color
render_siluete_from_texture(); // using texture from previous line

但是这会慢得多,需要一致的缠绕规则.

另一种选择是从CPU端的网格中编译边缘列表,并删除所有重复的边。然而,它的简单和快速将创建新的VBO/VAO数据,并且不再满足您使用相同数据的要求(然而,新的VBO可能只是整数索引,因此每个边只有2个ints )。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71325300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档