问题标签 [glsles]

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

opengl-es - 纹理图集平铺

我正在尝试在 ios opengl es 2.0 (ipad) 上进行简单的纹理喷溅。我在 pvrt 压缩图集(2x2 瓷砖)中有 4 个平铺纹理。4 个纹理单元上的 4 个单一纹理非常慢。

顶点着色器:

片段着色器:

显示这个:

一个表面
(来源:inputwish.com

我的问题可能是纹理单元插值器,但我不知道如何解决。我没有在我的着色器中看到错误。请问有什么建议吗?

0 投票
1 回答
459 浏览

android - 动画纹理坐标不起作用

我正在努力学习 GLSL ES,以便我可以将一堆动画从 CPU 卸载到 GPU。我的问题是创建一个使用精灵表的简单动画着色器。着色器根本不使用灯光,我只显示完整的纹理值以保持非常基本的内容。我选择的 OpenGL ES 框架是 Rajawali,所以我的一些值和参数是从这些类中提取的。

当我使用此着色器时isAnimated = false,纹理会按预期应用。但是,当isAnimated = true模型全黑时,就好像没有应用纹理一样。

我能够确认顶点和片段着色器正在评估ifdef ANIMATEDtrue,所以这似乎是我的纹理坐标修改引起的问题。

任何帮助是极大的赞赏!

这是我完整的非工作着色器类:

}

0 投票
1 回答
218 浏览

objective-c - Objective-C GLSL mix() 等效

我试图弄清楚如何编写等效于 GLSL(ES) 的混合方法。我试图添加/划分 rgb 值,但还没有运气。任何指向 GLSL 方法如何工作的指针都将受到欢迎。

0 投票
0 回答
139 浏览

opengl-es - GLSLES 使用统一浮点数而不是例如 0.5 损失 5-6 毫秒

我有这个片段着色器。在一些“精灵”上,我想要纹理的不同“饱和度”。目前我只设置一次,但后来我会根据绘制的精灵蜜蜂设置每次绘制。如代码中所述,如果我只写 * 0.5,我不会看到性能下降,但如果我使用 * u_test,速度会降低约 5-7 毫秒。这可能吗?你能想到其他解决方案吗?我完全走错了吗?

0 投票
1 回答
380 浏览

opengl-es - 何时确定在 gl_VertexID 中使用的顶点索引

我试图了解 gl_vertexID 在顶点着色器中的行为。为此,我尝试使用两个 glDrawArrays 调用一个接一个地渲染 2 个正方形。并希望在顶点中使用 gl_VertexID 仅将红色应用于一个正方形:

将颜色传递给片段着色器。

方坐标为:

进行绘图调用:

使用 Nvidia 卡,并调用两个 glDrawArrays 调用正在显示预期的结果,即将一个正方形渲染为红色,将另一个渲染为白色。

因此,想知道在 glDrawArrays 调用期间是否应该生成正确的行为或 gl_VertexID 索引,以便两个正方形具有相同的红色?

我正在使用 2 个 glDrawArrays 调用,所以我的理解是根据规范,两个方块都应该是红色的:

http://www.opengl.org/sdk/docs/manglsl/xhtml/gl_VertexID.xml

想为 glsl 300 es 测试它。

0 投票
1 回答
767 浏览

android - Opengl ES 2.0:模型的某些部分在不应该被遮挡的地方被遮挡。z-buffer 是罪魁祸首吗?

我正在使用 Assimp 使用 OpenGL ES 2.0 渲染 3D 模型。我目前遇到一个奇怪的问题,其中模型的某些部分不可见,即使它们应该可见。在这些图片中很容易看到它:

纹理模型

在第二张图片中,我将 z-buffer(的线性化版本)渲染到屏幕上,看看它是否可能是 z-buffer 问题。黑色像素靠近相机:

zbuffer渲染

我试图更改 z-near 和 z-far 的值而没有任何效果。现在我在初始化时这样做:

我也在为每一帧都这样做:

我认为这可能是面部缠绕问题,所以我尝试禁用 GL_CULL_FACE,但它不起作用。我很确定模型很好,因为 Blender 可以正确渲染它。

我现在正在使用这些着色器:

这是片段着色器:

我正在使用带有索引的 VBO 来加载几何图形和东西。

当然,我可以粘贴一些您认为可能相关的其他代码,但现在我很高兴了解可能导致这种奇怪行为的一些想法,或者我可以做的一些可能的测试。

0 投票
3 回答
1929 浏览

android - Android Openg GL ES 2 绘制大纹理缓慢

我对 OpenGL很陌生。

我正在尝试绘制带纹理的四边形(2 个三角形)。纹理大小为 900x900px。我对一个四边形没有任何问题,但是当我尝试绘制 5-10 个四边形时,我发现速度明显变慢。

也许我做错了什么......

代码:

顶点着色器:

片段着色器:

测试平台为 Galaxy S3。在分析器中,我看到大约 60 毫秒需要 eglSwapBuffers 调用。

如何快速绘制具有大纹理的四边形?

0 投票
1 回答
113 浏览

android - OpenGLES2无法渲染位图



这是在 android 平台上使用 OpenGLES2.0 开发移动应用程序(针对 API 8,如果有任何区别)。

我正在尝试在我当前工作的渲染系统上添加一个 UI 层,但它不起作用,我不知道为什么。任何帮助将不胜感激。

这就是我正在做的事情:
1)初始化时,我正在加载一整堆要显示的网格,这些网格使用各种程序进行渲染。其中一个网格显示纹理,这是有效的。
2) 在我加载了所有网格之后,我加载了一个“按钮”,它基本上是一个正方形,具有相同的纹理,已经在上面的 (1) 中使用过。
3)我的主渲染循环使深度蒙版可写,并且依次为每个程序渲染任何不透明的内容,然后将深度蒙版设为只读,然后依次为每个程序渲染任何具有任何透明度的内容,然后清除深度缓冲区位并依次渲染每个 UI 组件。

我正在做一件事,这可能不是正确的做事方式——渲染我的 UI 组件的程序没有执行任何模型-视图-投影转换——我将标准化的设备坐标直接传递给它,它只是一个通过。据我所知,这应该可行 - 我只提到它是因为我对此持怀疑态度。UI组件程序的顶点和片段着色器代码如下:
int vShader = compileShader(GLES20.GL_VERTEX_SHADER,
"attribute vec4 aPosition;" +
"attribute vec2 aTexCoord;" +
"varying vec2 vTexCoord;" +
"void main() {" +
" vTexCoord = aTexCoord;" +
" gl_Position = aPosition;" +
"}");
int fShader = compileShader(GLES20.GL_FRAGMENT_SHADER,
"precision mediump float;" +
"uniform sampler2D uTexture;" +
"varying vec2 vTexCoord;" +
"void main() {" +
" gl_FragColor = texture2D(uTexture,vTexCoord);" +
"}");


这是我尝试过的:
1)我尝试过阻止不透明和透明的程序运行。在这种情况下,我得到一个完全充满垃圾的屏幕(带状规则间隔的水平条纹,在纯黑色和看似随机的东西之间交替 - 每个带可能大约 50 像素高)。
2)我检查了我FloatBuffer所基于的浮点数组的内容(我不知道如何FloatBuffer直接检查。这对我来说看起来不错。

我有点难过!有人有什么想法吗?

0 投票
3 回答
1908 浏览

opengl-es - Writing to gl_FragColor causes glUseProgram to throw GL_INVALID_OPERATION

I'm trying to write a blur filter in GLSL ES 2.0 and I'm getting an Error with the line assigning gl_FragColor. I've not been able to figure out why

The assignment of gl_FragColor causes calls to glUseProgram to error with GL_INVALID_OPERATION. I've tried this without it and it compiles and operates without the error. I'm hoping someone can point me in a direction i haven't looked yet at least because I can't see any reason this isn't working.

EDIT: I solved this. As best I can tell the GLSL-ES on android doesn't allow indexing arrays with non-constant variables. GLSE-ES 2.0 specification page 97 10.25 states it's not directly supported by all implementations and on page 109 it states that loop indices can be considered constant-expressions but not must. I rolled out my loop and it's linking fine now.

Thank you everyone who responded, I was able to narrow this down thanks to your insight.

0 投票
0 回答
106 浏览

ios - ios - 使用 openframeworks 导入并使用它 glview

只是一个想法,是否可以使用 openframeworks 导入一些 3d 对象,然后将其从 ios 传递给 glview,然后与 glsl 混淆?我目前正在使用 of_ios_074,根据进一步阅读,似乎还没有移植到 Opengles 2.0,这意味着我们还不能使用 glsl 对吗?