首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WebGL -如何传递无符号字节顶点属性颜色值?

WebGL -如何传递无符号字节顶点属性颜色值?
EN

Stack Overflow用户
提问于 2011-08-26 16:17:07
回答 1查看 13.5K关注 0票数 18

我的顶点由一个具有以下结构的数组组成:

代码语言:javascript
复制
[     Position      ][        colour        ]
[float][float][float][byte][byte][byte][byte]

传递顶点位置是没有问题的:

代码语言:javascript
复制
gl.bindBuffer(gl.ARRAY_BUFFER, this.vbo);
gl.vertexAttribPointer(this.material.aVertexPosition, 3, gl.FLOAT, false, 4, 0);

但我不知道如何将颜色传递给着色器。不幸的是,它不可能在glsl着色器中使用整数,所以我必须使用浮点数。如何将我的无符号字节颜色值转换为glsl浮点颜色值?我像这样分别尝试了r,g和b,但颜色都弄乱了:

代码语言:javascript
复制
gl.bindBuffer(gl.ARRAY_BUFFER, this.vbo);
gl.vertexAttribPointer(this.material.aR, 1, gl.BYTE, false, 15, 12);

顶点明暗器(colouredPoint.vs)

代码语言:javascript
复制
precision highp float;

attribute vec3 aVertexPosition;
attribute float aR;
attribute float aG;
attribute float aB;

uniform mat4 world;
uniform mat4 view;
uniform mat4 proj;

varying vec3 vVertexColour;

void main(void){
    gl_PointSize = 4.0;  
    gl_Position = proj * view * world * vec4(aVertexPosition, 1.0);
    vVertexColour = vec3(aR, aG, aB);
} 

像素着色器(colouredPoint.fs)

代码语言:javascript
复制
precision highp float;

varying vec3 vVertexColour;

void main(void){
    gl_FragColor = vec4(vVertexColour, 1);
} 
EN

回答 1

Stack Overflow用户

发布于 2011-08-26 16:20:40

代码语言:javascript
复制
GLfloat red=(GLfloat)red/255;

我希望这就是你要找的^^

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7201826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档