问题标签 [vertex-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.
opengl - 任何 OpenGL 着色器拼写检查器?
我还没有找到一个工具来检查 OnpenGL 着色器上的文本拼写以用于 Eclipse 或其他。处理基于文本的着色器的拼写错误,例如:
是一项非常耗时的任务。
所以,我想知道是否有人知道某种有助于解决此问题的工具。
opengl-es - 当使用骨架矩阵进行漫反射/定向照明时,我的着色器应该是什么样子?
我在网上找到了如何执行漫射照明的示例,但我似乎找不到任何关于使用骨架矩阵时事情会如何变化的信息。
有人有我可以看的例子吗?
我专门以这个页面为例来学习扩散光照: http ://learningwebgl.com/blog/?p=684
opengl-es-2.0 - 使用顶点着色器将纹理移动到像素中心
我正在尝试将我的纹理移动到像素的中心,如此处所述OpenGL Texture Coordinates in Pixel Space但我正在努力这样做。我们试图以纹理为中心的像素还是在屏幕上?我们如何访问它们?这是我的顶点着色器:
我是开放 GL 的新手,刚刚开始研究顶点着色器,所以任何建议或提示将不胜感激。
编辑:我遇到的问题是,我的纹理中的像素在缩放时会变形。普通纹理看起来不错,但是当它们在 4x4 矩阵(模型视图矩阵)上使用 scaleM 命令缩放时,看起来随机行和列中有两列或两行相同的像素。
c - OpenGL(在 Ubuntu 中):glGetError() 返回 GL_INVALID_OPERATION
对于 OpenGL 的学习,我指的是openglbook。目前在第 2 章中,我正在尝试运行粘贴在此处以供参考的代码。
我面临的问题是以下功能:
如上function( glew.h
)所示,为什么会返回"GL_INVALID_OPERATION"
?
如果我评论这些行,那么它可以工作,但只会打印一个空白窗口。
这是我的glxinfo。由于我的版本是 2.2 并且此代码适用于 3.3+,因此我删除了以下代码以避免失败:
更新:在遵循@Tim 的回答建议后,我能够成功运行该程序;似乎这些行是创建问题:
“#version 400\n”(替换为“#version 130”)
和
布局(位置 = 0)(已删除)。布局(位置 = 1)(已删除)。
然而,由于这个原因,预期的三角形并不完全相同。可能本教程会考虑到最新的 opengl 版本,而我没有,这会产生问题。
有没有办法在不改变输出的情况下将代码从最新的 OpenGL (4.0+) 兼容代码修改为较低版本 (例如 < 3.0)?我将无法升级图形硬件。
directx - 好像我的像素着色器没有被调用
我一直在搞乱 DirectX,而且我一直在研究我的这个奇怪的想法已经有一段时间了。似乎我的像素着色器由于某种奇怪的原因没有被调用。我不知道这是否可能,或者这是我的一些愚蠢的错误。代码如下(我从教程中复制了大部分内容。)
着色器(HLSL)代码如下:
DirectX 初始化和渲染代码如下:
什么都没有在屏幕上渲染,我应该看到点或一个大的白色补丁,但我看到的只是渲染目标已清除。我一直在运行 Pix,PreVS 和 PostVS 转换看起来不错。请帮忙!
shader - 来自多个纹理的 WebGL 逐帧动画
我目前正在制作一个原型,旨在创建一个由一系列快速交换图像制成的短片互动电影。我们计划在每一帧上应用鱼眼后处理效果,并利用 WebGL 将此计算卸载到 GPU 单元。可以在此处找到使用 WebGL 实时应用此效果的示例。
这里涉及的主要挑战是能够将大量 512x512px 图像(2000 张或更多图像)下载到用户浏览器中,并在生成的序列中保持可接受的帧率(5-10 fps 的帧率开始是可以接受的)。这是一个探索性实验,因此它只能与 Chrome 兼容,并且图像序列会根据用户输入而变化,因此无法预先将序列预渲染到视频中。用于纹理的每张图像的平均重量为 25KB,它将由一个强大的 CDN 提供服务,该 CDN 旨在应对所涉及的大量流量。
相对较短的预加载时间是可以接受的(60 秒或更短),以便在我们用最初的体验来娱乐用户的同时缓存一些图像。
这可能吗?任何人都可以在这方面提供帮助?
webgl - 调用 glDisableVertexAttribArray() 重要吗?
我对启用顶点属性数组的范围并不完全清楚。我有几个不同的着色器程序,它们具有不同数量的顶点属性。glEnableVertexAttribArray
着色器程序的调用是本地调用还是全局调用?
现在,我在创建着色器程序时启用了顶点属性数组,并且从不禁用它们,而且一切似乎都有效,但似乎我应该在绘制调用之前/之后启用/禁用它们。对此有影响吗?
(碰巧我在 WebGL 中,所以我们真的在谈论gl.enableVertexAttribArray
and gl.disableVertexAttribArray
。我还要注意,橙皮书OpenGL Shading Language对这些调用非常缺乏信息。)
c++ - 如何在 GLSL 中使用 4x4 矩阵作为顶点属性?
我正在尝试使用 4x4 矩阵作为顶点属性,使用以下代码:
但我在屏幕上看到的都是垃圾。
opengl - 我的用于 OpenGL 的 Go 矩阵函数(透视/截锥和观察矩阵)有什么问题?
首先,这是非常简单的“新手标准”顶点着色器:
现在我渲染的是一个简单的 6 面立方体。36 个顶点坐标中没有应用或固有的旋转。标准教程风格的 -0.5..+0.5 东西。我会在这里为您省去顶点数组,但请放心,就这么简单。
- uMatModel现在只是单位矩阵,还没有缩放/平移/旋转
- uMatView是一个LookAt 矩阵(下面的 Go 代码),用 pos={ 0.1, 0.1, -3.0 }, target={ 0.1, 0.1, 0.1 }, up={ 0, 1, 0 } 调用(记住立方体顶点坐标都是所有维度都在 -0.5 和 0.5 之间,因此 0.1 应该“几乎在中心”)
- uMatProj是一个透视矩阵(下面的 Go 代码),以 fov=45 aspect=winwidth/winheight near=0.1 far=100 调用
理论上,“相机”应该在正对着它的立方体“后面”大约 2-3 个单位。相反,我得到...
我想知道轮换是从哪里来的……我什至还没有实施轮换。
因此,总而言之,我尝试在 Go 中自己实现所需的矩阵函数,并解决数学问题。但我一定在某个地方出了问题。任何人都可以在我的以下代码中发现任何矩阵理论问题吗?
注意,这里的Vec3是同一个包中的自定义类型,我这里没有包含。现在我假设 Vec3 函数是正确的(也更容易验证)并怀疑我以某种方式弄乱了矩阵结构中的LookAt和/或Perspective算法。
shader - 更改单行会导致着色器出错
我正在学习 3D 和着色器,我已经花了数周时间创建了一个着色器。
我在这个着色器中的一行有问题 - 评论一个并用另一个替换它会导致效果在IDirect3DDevice9::CreateVertexShader()
调用时失败。所有字段都已设置,当我将所有boneTransforms
和设置viewProj
为身份矩阵时也会发生这种行为。正如我将看到的模型一样,更改这一行(已注释)将导致顶点着色器无法编译。为什么会这样?我花了几天时间调试这个,找不到原因!
谢谢!