如何将多个参数发送到 WebGL 上的顶点着色器
How to send multiple parameters to the vertex shader on WebGL?
我正在学习OpenGL教程(因为WebGL教程很少见),其中对多个参数使用以下语法:
#version 330
layout (location = 0) in vec4 position;
layout (location = 1) in vec4 color;
smooth out vec4 theColor;
void main()
{
gl_Position = position;
theColor = color;
}
但是layout (location = #)
语法在WebGL上不起作用。有什么替代品?
如果你打算在WebGL中使用它,这个着色器有很多问题。
对于初学者来说,WebGL基于OpenGL ES 2.0,它使用从120派生的GLSL版本。
#version
指令对 WebGL 无效;不能对顶点属性或可变变量使用 in
、out
或 smooth
;没有布局限定符。
这将使您部分修复着色器:
#version 100
attribute vec4 position;
attribute vec4 color;
varying vec4 theColor;
void main()
{
gl_Position = position;
theColor = color;
}
但是您还需要在代码中绑定position
和color
的属性位置(在链接着色器之前 - 请参阅glBindAttribLocation (...)
)。如果您很难找到WebGL/ESSL的教程,则可以重用许多为GLSL版本120或更早版本编写的OpenGL教程。
您可以在此处阅读OpenGL ES 2.0的GLSL(ESSL)的官方规范。至少,看看介绍部分,因为它包含了很多有用的信息。
相关文章:
- 如何检测用于WebGL的专用或集成显卡
- 在WebGL中绘制多个二维图像
- WebGL绘制图像
- webgl在一个正方形上操纵两个纹理
- Three.js,WebGL,渲染六幅图像的全景图
- 如何在使用IEWebGL时检测WebGL是否可用
- WebGL-依次应用多个程序
- Three.js保存修改后的网格顶点r67
- 关于基于VivaGraph WebGL的渲染的问题
- webGL,javascript:尝试访问属性1中超出范围的顶点
- 我应该何时在WebGL/OOpenGL中启用/禁用顶点位置属性
- WebGL:优化顶点缓冲区,每帧更改值和顶点计数
- 如何在 WebGL 中流式传输顶点
- 如何在 webgl 中使用顶点缓冲区对象来定位粒子
- “没有VBO绑定到启用的顶点属性索引0”试图在WebGL中绘制一个简单的纹理
- 如何将多个参数发送到 WebGL 上的顶点着色器
- webgl中的顶点索引是什么?
- 如何获得webgl顶点的二维坐标
- 为webgl中的每个对象使用不同的顶点和片段着色器
- WebGL顶点空间坐标