作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将三角形带的顶点转换为独立的三角形,以便我可以使用 OpenGL 的 GL_TRIANGLES
图元类型来绘制它们。
但是,以下两个代码都不起作用,我不明白为什么:
for(int i = 0; i < triangleStripVertices.size() - 2; i++) {
triangleVertices.add(triangleStripVertices.get(i));
triangleVertices.add(triangleStripVertices.get(i + 1));
triangleVertices.add(triangleStripVertices.get(i + 2));
}
这个也不起作用:
for(int i = 0; i < triangleStripVertices.size() - 2; i++) {
if(i % 2 == 1) {
triangleVertices.add(triangleStripVertices.get(i));
triangleVertices.add(triangleStripVertices.get(i + 2));
triangleVertices.add(triangleStripVertices.get(i + 1));
} else {
triangleVertices.add(triangleStripVertices.get(i));
triangleVertices.add(triangleStripVertices.get(i + 1));
triangleVertices.add(triangleStripVertices.get(i + 2));
}
}
我在这里做错了什么?
损坏的输出如下所示:
最佳答案
您的尝试已经非常接近了,但您还缺少一点。三角形带具有“最旧的顶点”的概念,即处理三角形后将被删除的顶点。由于需要保持带中三角形的面度(有时称为顶点缠绕)相同,最旧的顶点不是列表中的下一个顶点;它在列表中最旧的和第二旧的之间翻转。
例如,假设您有一个顶点索引列表
GLuint indices = { 0, 1, 2, 3, 4, 5 };
然后您使用该列表调用glDrawElements()
。将使用上面列表中的顶点索引渲染以下三角形:(0, 1, 2), (2, 1, 3), (2, 3, 4), (4, 3, 5)。
因此,要将三角形带展开为一组三角形,您需要考虑到这一点。这是一个可以完成您想要的操作的代码 fragment :
for (int i = 0; i < triangleStripVertices.size() - 2; i++) {
if (i % 2) {
triangleVertices.add(triangleStripVertices.get(i + 1));
triangleVertices.add(triangleStripVertices.get(i));
triangleVertices.add(triangleStripVertices.get(i + 2));
}
else {
triangleVertices.add(triangleStripVertices.get(i));
triangleVertices.add(triangleStripVertices.get(i + 1));
triangleVertices.add(triangleStripVertices.get(i + 2));
}
}
关于java - 三角带三角剖分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861508/
我有一个绕其 3 轴旋转的立方体,当 key[a] == true 时,它会向左旋转,就好像它正在滚动一样。将立方体向任何方向旋转 45 度,将其向后旋转 90 度,以获得继续的错觉。这将保持 3
我是一名优秀的程序员,十分优秀!