问题标签 [geometry-shader]

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 回答
478 浏览

opengl - 为什么我通过的顶点比在 GLSL 几何着色器中生成的要多?

为什么我可以通过我的几何着色器 N(其中 N 是一个非常高的数字,例如 10000)顶点并像这样渲染它们:

...但我不能像这样生成 N 个顶点(当只传递一个顶点时):

OpenGL 是如何区分这两者的呢?

*注意:我修改了访问 gl_PositionIn[0] 等的代码,但第二个仍然给我一个错误。*

0 投票
1 回答
2299 浏览

opengl - 带有几何着色器的 OpenGL 几何挤出

借助 GLE 管道和挤压库 ( http://www.linas.org/gle/ ),我能够使用 OpenGL 将 2D 计数挤压成 3D 对象。该库在 CPU 上完成所有工作并使用 OpenGL 即时模式。

我猜想使用几何着色器在 GPU 上进行挤压可能会更快,尤其是在渲染大量几何图形时。由于我还没有任何在 OpenGL 中使用几何着色器的经验,我想知道这是否可能以及我必须注意什么。您认为将这些计算转移到 GPU 上并提高性能是个好主意吗?还应该可以将渲染的几何图形从 GPU 中返回到 CPU,可能使用“渲染到 VBO”。

0 投票
1 回答
6317 浏览

opengl - GLSL 如何使用几何着色器显示法线?

我有vertex shader

fragment shader

它将索引GL_TRIANGLE_STRIP作为输入

代码按预期工作,但我不确定我的法线是否正确排列:它们存储为字节(转换为 GLfloat 为 b / FF),坐标 xyz 已更改,有些可能需要取反。

有人可以告诉我geometry shader将法线显示为线条,如http://blogs.agi.com/insight3d/index.php/2008/10/23/geometry-shader-for-debugging-normals/所示(那些着色器不适用于一切似乎在顶点和片段着色器之间丢失/输入数据)。

PS 我不确定我是否正确地完成了所有操作(启动 OpenGL 和 GLSL),所以任何建议也值得赞赏。

编辑:我geometry shader通过例子变得简单

但我不知道它在哪里gl_ModelViewProjectionMatrix(似乎已弃用)并且结果看起来很糟糕,似乎包括法线在内的所有东西都被剥离了。在 glPolygonMode(GL_FRONT, GL_LINE) 模式下的图片,纹理也试图映射到那些。 在此处输入图像描述

0 投票
1 回答
1811 浏览

c++ - 如何使用几何着色器从点数据中绘制正方形

我想用几何着色器从点数据中绘制一个正方形。

在 中vertex shader,我发出一个点。

在几何着色器中,我想创建一个三角形带,形成一个正方形。

目前大小无关紧要,因此模型的大小应为1(范围从(-0.5,-0.5)从初始点位置到(+0.5,+0.5)。

我需要帮助来计算发射顶点的位置,如代码中所示:

我想用来trans将初始点转换为所需的坐标。我怎么会意识到这一点?

为清晰起见进行编辑

我想从一个点生成顶点缓冲区的其他内容;一架飞机:

相反,我只在这些点的中间给出一个点,并希望通过减去和添加中心的差异来生成真实点(0.5 和 -0.5 等)。我所需要的只是知道如何在代码中应用这种转换(在哪里???)。

0 投票
0 回答
660 浏览

c++ - 由几何着色器创建的旋转顶点

我正在尝试从 6 个点生成一个立方体(每个点代表一个边,然后是 2 个额外的值来说明它是否旋转到面对 x 或 y 轴,z 轴不需要一个,因为默认情况下它是这样的) . 当我尝试将 gl_Position 值乘以 mat4 旋转矩阵以使立方体的侧面正确旋转时,问题就出现了。它甚至没有出现故障,它根本不显示面部(当我没有矩阵乘以值时它会显示)。

这是我的几何着色器:

片段和顶点是非常标准的(顶点上有一些基本的相机东西)。

0 投票
1 回答
7216 浏览

opengl - 计算法线几何着色器

我目前正在编写自己的 GLSL 着色器,并且想要平滑着色。当我在将法线发送到 VBO 之前计算法线时,阴影会起作用,但这里的问题是当我使用骨骼矩阵实现动画时,法线不正确。

我正在使用几何着色器来计算法线,但我不知道如何平滑它们。

这是我的几何着色器:

我需要计算法线的脸部旁边的脸部,但我不知道如何获得它们。

0 投票
1 回答
461 浏览

geometry - 如何在片段着色器中找到 4 个顶点之间的插值位置?

我正在使用 SharpDX(C# 中的 DirectX11)创建一个着色器,它从顶点着色器的输出中获取一个2 个点) ,然后将它们传递给一个几何着色器,它将这条线转换为一个矩形4 个点)并分配四个角是一个纹理坐标。

之后,我想要一个片段着色器(它接收插值位置和插值纹理坐标)来检查“矩形的脊椎”(即穿过矩形中间的线)的深度。

问题是我不知道如何在矩形的脊椎处提取相应片段的位置。发生这种情况是因为我插入了纹理坐标,但我不知道如何使用它们来获取我想要的片段,因为 a) 纹理的坐标系和 b) 我的片段在屏幕空间中的位置不是相同的。

非常感谢您的帮助。

0 投票
1 回答
2456 浏览

opengl - 是否可以使用独特的几何着色器绘制带有股线的球体?

我想显示一个简单的 UV 球体(从 Blender 导出)并使用独特的几何着色器生成具有法线坐标的线条。

第一次,我编写了一个简单的几何着色器,它简单地将输入顶点信息返回到片段着色器。为了简单起见(例如),我删除了片段着色器中的亮度计算。

顶点着色器:

几何着色器:

和片段着色器:

现在在 C++ 代码中要绘制的原始类型(这里是三角形):

最后是输出:

在此处输入图像描述

直到这里一切都好。现在我想在球体上生成股线作为法线。为了完成这项工作,我编写了以下几何着色器(顶点和片段着色器是相同的)。

输入原始类型是点我修改了 C++ 代码来绘制场景:

和输出:

在此处输入图像描述

最后,如果我想在几何着色器中将三角形输入作为输入图元,将 line_strip 作为输出图元,我有以下着色器:

输出如下:

在此处输入图像描述

但我的目标是使用相同的几何着色器在一个输出中显示场景(球体+股线)。我想知道是否可以这样做。我不这么认为,因为几何着色器必须只有一种类型的输入基元和另一种输出类型,而不是几种类型。我想确定它是否可能。

0 投票
1 回答
1649 浏览

opengl - 使用几何着色器和lines_adjacency绘制四边形和三角形的混合

我目前的渲染实现如下:

  • 将所有顶点信息存储为四边形而不是三角形
  • 对于三角形,只需重复最后一个顶点(即v0 v1 v2 v2
  • 将顶点信息传递lines_adjacency给几何着色器
  • 检查是四边形还是三角形,输出为triangle_strip

我走这条路的原因是因为我正在实现一个线框着色器,并且我想绘制没有对角线穿过它们的四边形。但是,我已经放弃了这个功能。

我现在想知道是否应该回到简单的绘图GL_TRIANGLES,并将几何着色器排除在等式之外。但这让我开始思考......从性能的角度来看,实际上什么更有效?

  • 平均而言,我的场景由等量的四边形和三角形组成。
  • 绘制所有三角形意味着:每个四边形 6 个顶点,每个三角形 3 个。
  • 使用lines_adjacency 绘制意味着:每个四边形4 个顶点,每个三角形4 个。
  • (这是索引绘图,因此它们的顶点缓冲区大小相同)

所以顶点比率是 9:8(三角形:lines_adjacency)。

假设使用索引绘图,每个顶点仅由顶点着色器处理一次(而不是每个索引一次),我是否正确?在这种情况下,绘制三角形会更有效(因为不需要执行额外的几何着色器步骤),唯一的缺点是索引占用的额外内存量很小。

再说一次,如果顶点确实每个索引处理一次,我可以看到边缘使用 lines_adjacency 方法,考虑到几何转换非常简单,而顶点着色器可能正在运行更密集的光照计算。

所以这几乎总结了我的问题:如何用索引绘图处理顶点,如果包含一个简单的几何着色器,可以预期什么样的性能影响?

0 投票
0 回答
157 浏览

sql - 获取圆周扇区内的坐标

我有一个带有闪电坐标的数据库(PostgreSQL)。我想要圆周扇区内的坐标(SQL 查询)。我有圆周的半径,角度(Z)和点A,以及极值点的坐标([lat1,lng1],[lat2,lng2])。

在此处输入图像描述

非常感谢!