问题标签 [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 回答
1543 浏览

opengl - 'gl_VerticesIn' :未声明的标识符

为什么在编译 GLSL 几何着色器时会出现此错误?

错误:0:15:'gl_VerticesIn':未声明的标识符

这是着色器:

对我来说似乎很简单,但我找不到关于“gl_VerticesIn”的太多信息,我认为它应该是内置的。如果我只是用“3”替换“gl_VerticesIn”,一切正常。

我正在使用 GeForce GTX 765M 和 OpenGL 3.3 核心配置文件。我使用任何其他 GPU 时都没有此错误。我的驱动程序是最新的。

0 投票
0 回答
664 浏览

c++ - 几何着色器不发出几何图形

我正在设置以下管道:

顶点着色器将 4 个顶点作为输入以绘制为带有三角形条的全屏四边形:

顶点着色器:

然后我想在几何着色器中对它们做一些工作。但现在我只是尝试从着色器发出与三角形条相同的顶点,以确保它工作正常。

几何着色器

}

和片段着色器:

客户端设置是这样的:

抽奖电话:

奇怪的是它不起作用!输出是空的。如果我切换到发射点,它确实会发射它们。顶点数据是 100% 正确的。如果我分离几何着色器,它会绘制四边形。什么这里可能是错的吗?

更新:

这种变化确实有效。

几何着色器中输入/输出的 Redclare 仍然没有帮助:

0 投票
1 回答
2868 浏览

opengl - 传递给几何着色器的顶点属性数据未正确设置

这是代码:

顶点着色器:

几何着色器:

所以问题是,当我将 passFIndex 设置为仅包含位置 7 的顶点属性的数组时,它没有正确设置。问题是,它总是设置为 0。但是,我知道 FIndex 的底层顶点数据不是 0,因为我可以使用不同的着色器程序(没有 GS 的程序)并且 FIndex 会适当变化。

我可以将“passFIndex = int [] (FIndex)”替换为“passFIndex = int [] (2)”或其中的一些其他常量,这样可以创建一个非零的数组,并且它的索引符合预期几何着色器。这似乎告诉我顶点着色器出了点问题,但我无法想象它是什么。

0 投票
1 回答
687 浏览

debugging - 在绘图调用 DrawInstancedIndirect 中调试几何着色器

我的程序是一个雨粒子系统,它基于用于推进雨滴的计算着色器和另一个用于渲染高级雨滴的渲染着色器(顶点着色器、几何着色器、像素着色器)。

我使用绘图调用:DrawInstancedIndirect 将计算着色器的结果应用到渲染步骤。

我的问题是在几何着色器的渲染步骤中,我试图为每个雨滴绘制一个广告牌。如果我只是画一个普通的矩形,它会渲染得很好,当我更改为广告牌时,渲染目标中什么都没有。我试图找到一种方法来调试这个几何着色器。我使用以下工具来调试几何着色器,但它们确实对我有用。

VS2012 中的图形调试器。这个工具似乎不支持绘制调用:DrawInstancedIndirect。

GPU 佩夫特工作室。它支持顶点、像素着色器,但不支持几何着色器。我试图将几何着色器的直接值传递给像素着色器以查看它们,它们都为零。但我需要深入研究几何着色器以找出错误。

NVDIA 的 Nsight。我的显卡是720M的,可惜Nsight只支持730M起。可能是我在调试过程中着色器列表为空的原因。

我现在很绝望,没有办法找出问题所在。我希望你能建议我一种调试这个几何着色器的方法。非常感谢!

0 投票
1 回答
753 浏览

c++ - 直通几何着色器

我刚开始使用 OpenGL 和 Qt。我尝试使用几何着色器来更改线条的宽度,但即使是简单的直通几何着色器也会导致屏幕空白。

这是我的代码(摘录):

顶点着色器:

几何着色器:

片段着色器:

如果我line_shader.addShaderFromSourceFile(QGLShader::Geometry, ":/shaders/lines.g.glsl");从代码中删除,一切都会按预期工作。

我在这里做错了什么?

编辑:我使用 OS X 10.9,Qt 5.2.1。

0 投票
1 回答
418 浏览

glsl - 几何着色器错误地解释为顶点着色器

我正在尝试让我的简单几何着色器工作。但我有一些奇怪的错误信息。似乎opengl认为我的几何着色器是我的顶点着色器。
这是错误消息:

0<10>:错误 C7575:OpenGL 不允许顶点着色器中的输入块

但是我的顶点着色器没有输入块。

这是我的顶点着色器

几何着色器

片段着色器

当我运行程序时,几何着色器无法编译。只有当我摆脱它编译的输入块时。

我也认识到,功能...

...当几何着色器不包含时返回 0 和 1(对于 positionID 和 colorID),当它包含在着色器程序中时返回 0 和 -1。所以我认为出了点问题,但我不知道它可能是什么。
请帮忙 :)

我不知道它是否有帮助,但这里是制作着色器的代码。

首先,我从文本文件中获取着色器代码。然后我调用函数来制作着色器和着色器程序。

以下是制作着色器的函数。

0 投票
1 回答
1439 浏览

c# - SharpDX / DirectDX:透明度、法线和渲染顺序

我正在渲染几个用几何着色器创建的立方体(我只加载位置和颜色),每个立方体都有不同的 alpha 值。问题是,在启用 alpha 混合后,立方体的可见性会随着我看它们的角度而变化。alpha > 0.5 的物体看起来很坚固,当我稍微旋转它们时几乎消失了。

红色立方体的 alpha = 255,但我们可以看到它下面的内容。我试过启用和禁用模板缓冲区,但它没有做任何改变,所以我猜它要么是我的着色器,要么是一些简单的东西,比如错误的标志值。

http://tinypic.com/r/10e589v/8

阿尔法混合

几何着色器

其他面以相同的方式创建。

0 投票
1 回答
108 浏览

opengl - 顶点着色器 -> 几何着色器,错误“获取非活动制服的位置”

我有类似以下设置的东西,

顶点着色器(......无关的东西):

几何着色器(......无关的东西):

但是当我尝试运行着色器时,它看起来好像没有使用 ModelViewMatrix(我在尝试设置它时得到“获取非活动制服的位置”),甚至认为我正在使用它来计算几何中的 gl_Position着色器。是什么赋予了?

据我了解,这里的几何着色器需要 2 个顶点并输出 4 个供片段着色器使用,我是否正确理解和使用几何着色器?

0 投票
1 回答
1523 浏览

opengl - 在顶点和片段着色器之间添加几何着色器的链接错误

当我尝试在工作顶点和片段着色器之间添加几何着色器时,出现链接错误:

所有三个着色器都编译没有错误。我猜输入和输出不适合信息流管道。内置的来龙去脉让我感到困惑,所以我无法发现错误。

着色器的来源:

我在几何着色器中做错了什么?

我尝试跳过未使用的 oColor 并更改为几何着色器中的数组,如下所示:

这给了我以下链接错误:

0 投票
1 回答
1178 浏览

opengl - 单通道线框问题

我正在尝试实现单通道线框,但在此过程中遇到了一些问题。

问题 #1

由于某些原因,glPolygoneMode在我的几何着色器工作后,我只得到了没有(如用 - 线)填充几何的线框。

  线框)

但是,如果我禁用几何着色器,我会得到我的几何:

  填充多边形

我真正想要实现的是几何和它的线框。

问题2

实际上,我的基元是三角形条带。我使用它们来避免使用四边形来提高性能。绘图时如何跳过线框的边缘?(我已经看过如何做到这一点,但我仍然不清楚。)

这是我的着色器:

顶点着色器:

几何着色器:

片段着色器:

帮助我找出我哪里做错了。

更新:

我已经更新Fragment shaderGeometry shader在他的回答中提到了 Andon M. Coleman,但问题2 中描述的问题仍未解决。

在此处输入图像描述

更新 2

我刚刚在片段着色器中做了一些小编辑,这解决了我的问题。

更新片段着色器