OpenGL给Shader变量传递参数

来源:互联网 发布:js端口探测 编辑:程序博客网 时间:2024/06/06 07:28

首先需要了解Shader中变量的四个修饰符

varying:在顶点着色器和片元着色器中传递参数,在顶点着色器中被修改,在片元着色器中只读

uniform:一致变量,在一个图元绘制过程中不会改变 ,在opengl中传递参数到shader,在顶点着色器和片元着色器中使用

attribute:随不同顶点变化的全局变量,由opengl中传递值到shader,只能在顶点着色器只读

const:同c语言const,编译期常量


OpenGL中传递参数给uniform变量

Shader内容

vec4 a = vec4(1.0,2.0,3.0,4.0);float posX=a.x;float posY=a[1];vec2 posXY=a.xy;float depth=a.w;const float x=1.0f;

OpenGL程序

GLuint positionZ=glGetUniformLocation(p,"PositionZ");glUniform1f(positionZ,10.0f);float specColorArr[4]={0.8,0.8,0.8,1.0};GLuint specColor=glGetUniformLocation(p,"specColor");glUniform4fv(specColor,1,specColorArr);float tArr[2]={1.0,2.0};GLuint t=glGetUniformLocation(p,"t");glUniform1fv(t,2,tArr);float colorsMatrix[12]={0.3,0.3,0.3,1.0,0.2,0.2,0.2,1.0,  0.8,0.8,0.8,1.0  };GLuint colors=glGetUniformLocation(p,"colors");glUniform4fv(colors,3,colorsMatrix);



0 0
原创粉丝点击