如何获取shader中的变量并赋值(⼀)
获取shader中的uniform变量并赋值position和location的区别
如何将数据设置到shader中去?⽐如mvp三⼤矩阵,⽐如顶点数据
在shader中有⼀个槽的概念。槽的编号是从0开始的。cellspacing的参数配置
OpenGL会把槽和attribute、uniform等类型的变量对应上,就像下⾯这样:
attribute的变量对应到attribute的插槽上
uniform的变量对应到uniform的插槽上
我们给shader中变量设置值,就是告诉gpu哪个插槽上设置什么值就可以了
所以,我们只要知道shader中的变量对应的插槽,然后给那些插槽设置值,就是给shader中的变量设置值
获取shader中的变量
GLint positionLocation, modelMatrixLocation, viewMatrixLocation, projectionMatrixLocation;
类的constructorpositionLocation = glGetAttribLocation(program, "position");
modelMatrixLocation = glGetUniformLocation(program, "modelMatrix");
viewMatrixLocation = glGetUniformLocation(program, "viewMatrix");
projectionMatrixLocation = glGetUniformLocation(program, "projectionMatrix");
设置shader中的变量
1.设置前,需要先选⼀个程序,⽤来执⾏要绘制的指令
2.设置uniform变量时,调⽤glUniformMatrix4fv(),第⼀个参数传⼊shader中的插槽的位置;第⼆参数传设置矩阵的个数,因为⼀kerastase旗舰店
个插槽上可能对应的是⼀个矩阵数组;第三次参数表⽰矩阵从cpu到gpu传输的过程中需不需要对他进⾏转置;第四个参数传⼊数据的起始地址
3.当我们的绘制执⾏完了之后,也就变量的值设置完了之后,把当前程序设置为0号程序
glm::mat4 modelMatrix, viewMatrix, projectMatrix;
projectMatrix = glm::perspective(60.0f, width / height, 0.1f, 1000.0f);
glUseProgram(program);//选⼀个程序来执⾏绘制指令
链表和数组保存的区别glUniformMatrix4fv(modelMatrixLocation, 1, GL_FALSE, glm::value_ptr(modelMatrix));
glUniformMatrix4fv(viewMatrixLocation, 1, GL_FALSE, glm::value_ptr(viewMatrix));
glUniformMatrix4fv(projectionMatrixLocation, 1, GL_FALSE, glm::value_ptr(projectMatrix));rabbitmq几种工作模式
glUseProgram(0);//当前程序设置为0号程序
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论