问题标签 [gl-triangle-strip]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2767 浏览

opengl-es - 如何在 OpenGLES 中使用 GL_TRIANGLE_STRIP 画线?

目前我正在使用openGLES在简单的游戏应用程序中工作,使用GL_Lines模式画一条线并且工作正常,我想使用GL_TRIANGLE_STRIP画一条线,是否可以使用GL_TRIANGLE_STRIP画一条线?

提前致谢

我试过源代码:

0 投票
1 回答
993 浏览

opengl-es - 带纹理的三角形条带 - 超出第一行的行会产生乱码输出

我正在使用 OpenGL ES、glDrawArrays 和 GL_TRIANGLE_STRIP 绘制一些“简单”的 2D 图形。

我正在编写一个函数,其目的是获取一个 13x13 点(或其他任意大小)的纹理并将其输出到指定数量的列和行中。因此,对于 2 行和 3 列,这意味着一个区域被 26x39 点上的 6 个图块覆盖。第一行适用于以下代码,但只要我指定 2 行或更多行,就会出现乱码输出。

0 投票
2 回答
659 浏览

opengl - OpenGL - 如何在不影响纹理的情况下跳入单个 TRIANGLE_STRIP?

如果将同一个顶点 A 多次放入三角形带中,然后取另一个顶点 B 并将其多次放入三角形带中(数量取决于要继续使用的三角形方向),则可以有效地拥有两个单独的三角形条带仅通过一个绘制调用来渲染(第一个包含顶点 A 之前的所有三角形,第二个包含顶点 B 之后的所有三角形)。

我的问题:

恐怕,即使完整的三角形条带绘制调用将绘制几何简单连接的网格,我在尝试对网格进行纹理处理时也会遇到问题,因为它们之间存在跳跃。我还没到那里,所以我无法测试它。我的假设正确吗?无论如何,在“绘图网格”行业中,我在三角形带中的跳跃是一种有效的技术吗?有什么方法可以适当地对结果进行纹理化,或者有一个等效的更好的跳跃替代方案?

0 投票
2 回答
10679 浏览

opengl - OpenGL中三角形缠绕方向的事实标准是什么?

我们在三角形缠绕方向上有两种选择,

  1. 顺时针
  2. 逆时针

无论如何,它们之间的转换可能需要一些成本。我想尽可能地避免转换,而要做到这一点,我需要知道事实上的缠绕方向标准。我认为有一个,因为许多大公司都在使用 OpenGL,而且我认为如果他们中的大多数人都使用一个方向,那就是事实上的标准。

如果没有这样的事情,请告诉我。

0 投票
1 回答
5744 浏览

opengl - 如何计算三角带中的NORMAL

我的 OPENGL 项目的照明有问题。我使用 ECLIPSE 在 c++ 上编程。我有一个由三角形带构成的地形。我的渲染代码如下:

我尝试对顶点使用法线,但我不知道如何计算 glnormal 函数的参数。然后我必须使用正常的脸。你能帮我解决这个问题吗?


是的,我需要按面法线,之后我必须按顶点法线:对于按面法线,我这样做 void HeightMap::Render(void) { int x = 0; 诠释 i = 0; glPushMatrix(); glRotatef(angle, xrot, yrot, zrot);//旋转对象 cout<<"valore di nrows è: "<getHeights(j); 浮动向量ba[3]={0.0,0.0,0.0}; 浮动向量cb[3]={0.0,0.0,0.0}; 浮动 xnormal = 0.0; 浮动正常 = 0.0; 浮动 znormal = 0.0; 浮动长度=0.0;

配方对吗?如何使用 normal 和 normalize 函数转换渲染?

0 投票
2 回答
578 浏览

opengl - qt + open Gl=paintgl 绘制三角形的函数

我已经编写了我在上一篇文章中读到的关于一个众所周知的主题的内容,但我继续得到一个绿色窗口,里面没有任何三角形。这是我的绘画功能:

我只得到一个没有任何三角形的绿色窗口。我的 QT 是 qt4.8 和 opengl 4.0。

我究竟做错了什么 ?-\

0 投票
1 回答
1888 浏览

ios - glDrawElements 三角形使用顶点数组开始和结束的顶点渲染(使用 GL_TRIANGLE_STRIP)

我正在尝试使用对glDrawElements(). 每条线都是一个四边形,我在它们之间使用退化三角形来分隔它们。

渲染时,正在使用索引和处的顶点绘制一个额外的三角形0,我认为这不是.n-1n-2GL_TRIANGLE_STRIPS

例如,12 个顶点组成 3 个四边形,我的索引数组如下所示:

(0, 1, 2, 3, 3 , 4 , 4, 5, 6, 7, 7 , 8 , 8, 9, 10, 11)

结果是这样的:

在第一个和最后一个顶点之间渲染的三角形

不管我要渲染多少个顶点,或者我在索引列表中放了多少个索引,它仍然会用三角形连接开始和结束。我正在使用 VBO 和 IBO 进行绘图,包裹在 VAO 中。所以要画画,我只需调用:

VAO设置:


我可能会做什么愚蠢的事情来导致这种行为?

0 投票
1 回答
2214 浏览

c++ - 将 GL_TRIANGLE_STRIP 显示为线框

我正在努力让opengl三角形条显示为线框。我的显示算法如下所示:

基本上,我正在做的是启动 gl_triangle_strip,然后为我的 heightfield 对象中的每个点绘制 x、y、z 坐标。

基本上这画出来的是一个大的白色斑点,我试图只显示不同点的线框。有人对如何做到这一点有任何想法吗?

0 投票
1 回答
4705 浏览

c++ - 使用 GL_TRIANGLE_STRIP 或索引 GL_TRIANGLES 绘制动态数量的四边形是否更有效

我正在用 C++ 开发一个简单的基于 sprite 的 2D 游戏,它使用 OpenGL 进行硬件加速渲染,使用 SDL 进行窗口管理和用户输入处理。由于它是 2D 游戏,我只需要绘制四边形,但由于精灵的数量是动态的,所以我永远不能依赖于恒定数量的四边形。因此,我需要通过我的 VBO 每帧重新缓冲所有顶点数据(因为可能有比上一帧更多或更少的四边形,因此缓冲区的大小可能不同)。

到目前为止,我的原型程序创建了一个窗口,并允许用户使用向上和向下箭头键在对角线行中添加和删除四边形。现在我正在绘制的四边形是简单的、无纹理的白色方块。这是我正在使用的代码(在 OS X 10.6.8 和带有 OpenGL 2.1 的 Ubuntu 12.04 下编译并正常工作):

目前我正在使用 GL_TRIANGLE_STRIPS 和 glMultiDrawArrays() 来渲染我的四边形。这很有效,而且在性能方面似乎相当不错,但我想知道是否将 GL_TRIANGLES 与 IBO 结合使用以避免重复顶点是一种更有效的渲染方式?我做了一些研究,有些人认为索引 GL_TRIANGLES 通常优于 GL_TRIANGLE_STRIPS,但他们似乎也假设四边形的数量将保持不变,因此 VBO 和 IBO 的大小不必每帧都重新缓冲. 这是我对索引 GL_TRIANGLES 最大的犹豫:如果我确实实现了索引 GL_TRIANGLES,除了每帧重新缓冲整个 VBO 之外,我还必须重新缓冲每个帧的整个索引缓冲区,这也是因为四边形的动态数量。

所以基本上,我的问题是:鉴于由于四边形的动态数量,我必须在每帧将所有顶点数据重新缓冲到 GPU,切换到索引 GL_TRIANGLES 来绘制四边形会更有效吗?坚持我目前的 GL_TRIANGLE_STRIP 实施?

0 投票
1 回答
1222 浏览

ios - opengl es、ios 和三角风扇

我目前正在使用带有以下代码的三角形渲染场景:

_mVertexArrayObjectTriangles 是我的顶点数组对象,其中包含要通过三角形呈现的元素

_mVertexPositionNormalTriangles 是我的顶点和顶点法线数组

_mCRBuffer->GetIndexTriangleData() 是我在顶点数组中的索引数组。这是一个简单的整数数组,对每个三角形进行编码(a、b、c、a、b、d 将编码两个三角形 abc 和 abd)。

一切都很好,但我想使用三角形风扇而不是三角形来渲染我的图元。如何设置要使用类似的东西绘制的三角形风扇数组(即一个以上)

如何设置我的索引数组来索引一组三角形风扇以进行渲染(而不是三角形)。顶点本身不需要改变,只是使用三角形扇而不是三角形来渲染它们的索引。

我可以找到使用三角形条带的好例子(这里),包括如何设置索引数组,但在三角形风扇上没有。