问题标签 [tesselation]

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

opengl - Go-GL 中的曲面细分

我正在尝试使用Golang OpenGL 绑定来细分一个简单的三角形

该库没有声称支持镶嵌着色器,但我查看了源代码,添加正确的绑定似乎并不十分棘手。所以我将它分支并尝试在gl_defs.go中添加正确的常量。

绑定仍然编译得很好,我的程序也是如此,当我真正尝试使用新绑定时,事情变得奇怪了。每当我实际尝试包含镶嵌着色器时,该程序就会从显示一个漂亮的圆形三角形变为黑屏。

我正在关注 OpenGL Superbible(第 6 版)并在这个项目中使用他们的着色器,所以我不认为我正在使用损坏的着色器(无论如何,它们不会吐出错误日志)。但如果着色器本身有问题,可以在此处setupProgram()的函数中找到它们。

我很确定我的显卡支持曲面细分,因为打印 openGL 版本会返回4.4.0 NVIDIA 331.38 .

所以我的问题:

是否有任何理由为细分添加 go 绑定不起作用?绑定看起来很简单。我是否错误地添加了新绑定?

如果它应该工作,为什么它不适合我?我在这里做错了什么?

0 投票
0 回答
82 浏览

java - 阴影贴图的光通不适用于细分?

我目前正在实现阴影映射,并且在我的程序中遇到了一些奇怪的逻辑,我使用以下程序:

light.vs.glsl

light.fs.glsl

但是我得出的结论是我实际上是在做 Tesselation,所以我真的不知道现在发生了什么,在Terrain.java

同样对于lightProgram传递给 的drawLightPass,已确保lightProgram.use()在此之前已调用过 ,这从代码中可能看起来并不明显。

正如你所看到的,我用 as argument调用drawArrays,现在这真的应该出错了,因为在我的整个程序中,我发现每个部分都被认为是在阴影中,所以我有这些问题:drawLightPassGL_PATCHES

1) 我当前的设置有问题吗?(我个人认为是。)

GL_PATCHES2) 如果我在附加的着色器没有启用 Tesselation 时传入,OpenGL 如何不给出错误?

3)如何修复它,使其也适用于 Tesselation?

如果需要更多代码,那么我会发布它,我只是不想用不必要的代码使帖子过于混乱。

0 投票
1 回答
1105 浏览

shader - 船体着色器术语

我对着色器编程相当陌生,我在 xna/directx9 上做了一些工作,但现在我想转向 c++/directx 11。我从这篇文章http://msdn开始阅读有关用于镶嵌的船体/域着色器的信息.microsoft.com/en-us/library/windows/desktop/ff476340(v=vs.85).aspx#Hull_Shader_Stage但我遇到了困难,因为我不熟悉某些术语。我知道这可能是一个微不足道的问题,但你能向我解释一下什么是补丁吗?还有一个控制点?什么是补丁常数阶段和控制点阶段?

0 投票
1 回答
725 浏览

opengl - gl_PrimitiveID 在镶嵌控制和评估着色器中是如何解释的?

OpenGL 规范。说:

该变量gl_PrimitiveID由生成输入顶点的绘图命令处理的图元数填充。由绘图命令生成的第一个图元编号为零,处理完每个单独的点、线或三角形图元后,图元 ID 计数器就会递增。使用原始重启索引重新启动原始拓扑对原始 ID 计数器没有影响。

不幸的是,我不太明白这一点。

GL_PATCHES如果我使用顶点数 = 32进行绘图调用,是否所有32个顶点在 Tesselation Control 着色器中都gl_PrimitiveID= 0 ?

   Tessellation Control 着色器仍会输出一个 Patch,而一个 Patch 是单个图元。

假设当这个补丁在 Tessellation Evaluation 着色器中被细分为三角形时,每个第 n顶点都有它的gl_PrimitiveID= n / 3是否正确?

如果不是,请解释他们的价值观是什么。

0 投票
0 回答
142 浏览

c++ - 镶嵌 - 保存数据

我正在使用镶嵌来将非三角形多边形转换为三角形多边形。我正在尝试将数据保存在变量中并在保存数据时运行一次细分代码。代码使用保存的数据在绘图函数中绘制它。

我正在尝试绘制星形多边形,问题是我可以看到一些三角形但看不到星形。为什么我保存数据时绘图会出错?

下面是初始化代码:

保存数据代码及保存绘图方式:

最后是卓尔功能:

正如我所说,我应该看到明星:

在此处输入图像描述

但我可以看到一些三角形:

在此处输入图像描述

代码有什么问题?为什么我不能只保存一次进行曲面细分代码的数据?

0 投票
1 回答
320 浏览

opengl - OpenGL 3.3 - 如何在运行时更改 tesselataionlevel?

如何在运行时更改细分级别?
我唯一的想法是创建一个只有一个变量的缓冲区对象,我必须通过它......有没有更好的解决方案?

我有一个可以正常工作的镶嵌控制着色器文件:

0 投票
0 回答
543 浏览

opengl - OpenGL 4:缝合的镶嵌补丁不适合在一起

问题已解决,请看下面的更正

我正在尝试使用矩形补丁、镶嵌和自定义细节级别来实现 TDM 的“海景”(参见此处https://www.shadertoy.com/view/Ms2SD1 )。不幸的是我不能得到gl_TessLevelOuter正确的。补丁之间有一些小孔。

我将天空盒设为红色以强调错误。

glDrawArraysInstanced用来绘制 64² 10*10 的补丁,并在顶点着色器中围绕摄像机位置重新排列它们:

然后我计算镶嵌控制着色器中的细节级别:

我认为错误在 TCS 着色器中的某个地方,但我找不到计算镶嵌级别的正确方法。

更正

0 投票
1 回答
394 浏览

opengl - 细分着色器

我正在尝试在 openGL 4.1 中学习曲面细分着色器。我明白了大部分事情。我有一个问题。

gl_InvocationID 是什么?

任何机构都可以用一些简单的方式解释吗?

0 投票
1 回答
1404 浏览

c++ - glDrawArraysInstanced 没有在 OpenGL 中进行多次绘制调用?

我正在尝试绘制两个矩形块(用于镶嵌),我想将它们从 0,0 绘制到 1,1 和其他从 1,0 到 2,1

我正在使用 GL_PATCHES 将四边形发送到我的图形管道

我在齐次坐标中的顶点数据是

在 C++ 代码中

但是我的屏幕上只有一个从 0,0 到 1,1 的矩形补丁。我不明白为什么它不绘制第二个矩形

我的镶嵌评估着色器是

我将此vert转换为vec4并将其传递给gl_Position

0 投票
0 回答
170 浏览

opengl - OpenGL曲面细分着色器中缺少线条

我正在学习曲面细分着色器,并按照OpenGL wiki的链接访问:

http://voxels.blogspot.de/2011/09/tesselation-shader-tutorial-with-source.html

我将四边形镶嵌示例移植到 Mac OS X,但它只在外层渲染了一半的线条。如果我在镶嵌评估着色器中更改ccwcw它会渲染另一半,但不会同时渲染两者。

预期(简化):

实际(逆时针):

实际(顺时针):

这是源代码(如果无法编译请告诉我):

我正在使用来自 macports (glfw @20150106) 的 GLFW 3.1。