OpenGL Shader Key Points (2)
1. Uniform
1.1. Uniform变量
不是所有的变量都是跟顶点一一对应的,如变换矩阵,光源位置等。
Uniform变量可以在任何类型的shader中使用,但只能作为输入值,不能在shader中给它赋值,只能在C/C++程序中指定。
layout (location = 0) in vec3 VertexPosition;
layout (location = 1) in vec3 VertexColor;
out vec3 Color;
uniform mat4 RotationMatrix;
void main()
{
Color = VertexColor;
gl_Position = RotationMatrix *vec4(VertexPosition,1.0);
}
在程序中指定uniform的值:
GLuint location =glGetUniformLocation(programHandle, "RotationMatrix");
if( location >= 0 )
{
glUniformMatrix4fv(location, 1, GL_FALSE, &rotationMatrix[0][0]);
}
API:
遍历shader program所有的uniform变量
glGetProgramiv
glGetActiveUniform
glGetActiveUniformName
glGetUniformLocation
1.2. Uniform blocks
单独的uniform变量是跟shader program绑定的,因而不能在多shader program中共享。
Uniform blocks用来在不同的shaderprogram中共享uniform数据。
API:
glGetUniformBlockIndex //根据名称找到uniformblocks的索引
glGetActiveUniformBlockiv //根据索引找到blocks的大小
glGetUniformIndices//根据uniform blocks的各分量的名字找到索引
glGetActiveUniformsiv//找到各分量的便宜量,这样就可以分配block并设置分量的值。
1.2.1. 创建uniform buffer object (UBO):
GL_UNIFORM_BUFFER
glGenBuffers
glBindBuffer
glBufferData
glBindBufferBase // UBO与uniformblocks绑定
OpenGL Shader Key Points (2)的更多相关文章
- OpenGL Shader Key Points (1)
1. Shader起步 1.1. 可编程管线 仅考虑Vertex shader和fragment shader: 1.2. Shader Object 在编译阶段生成,把shader源代码编译成 ...
- OpenGL Shader Key Points (3)
Shader和Program Program Link过后,Shader就可以从Program中Detach并删掉.这样是不是可以节省一点点显存呢? 链接到同一个program的vertex和frag ...
- OpenGL Shader in OpenCASCADE
OpenGL Shader in OpenCASCADE eryar@163.com Abstract. As implementation of one of the strategic steps ...
- A Simple OpenGL Shader Example II
A Simple OpenGL Shader Example II eryar@163.com Abstract. The OpenGL Shading Language syntax comes f ...
- A Simple OpenGL Shader Example
A Simple OpenGL Shader Example eryar@163.com Abstract. OpenGL Shading Language, the high-level progr ...
- OpenGL Shader源码分享
Opengl shader程序,旗帜混合纹理加载,通过N张图片,能够组合出数百个:http://www.eyesourcecode.com/thread-39015-1-1.html 用GLSL做了一 ...
- 【玩转cocos2d-x之四十】怎样在Cocos2d-x 3.0中使用opengl shader?
有小伙伴提出了这个问题.事实上GLProgramCocos2d-x引擎自带了.全然能够直接拿来用. 先上图吧. 使用opengl前后的对照: watermark/2/text/aHR0cDovL2Js ...
- web.xml配置web中的key points(上)
一.定义 定义时注意:xml元素是区分大小写的. <web-app></web-app> 这些必须小写 二.url-pattern 1)url-pattern 的值必须以/或者 ...
- Three Key Points of Success 成功三要素
Everyone wants to be successful. Today I would like to share three simple key points of success. Num ...
随机推荐
- PHP学习(2)——运行环境搭建
学习PHP首先要搞定PHP的运行环境.PHP的运行环境包括:PHP语言解析器本身以及Apache服务器.MySQL数据库等.因为只是学习嘛,尽快的搭建起来运行环境就好,到后期慢慢懂得多了再去想规范化搭 ...
- Socket实现单客户端与服务器对话功能
单客户端,顾名思义,就是客户端只有一个用户去访问服务器,然后服务器根据该客户请求返回信息,先看下效果图: 服务端(左)和客户端(右): 注意,我是用了两个eclipse,一个只放服务端文件,一个只放客 ...
- 【Netty源码分析】ChannelPipeline(二)
在上一篇博客[Netty源码学习]ChannelPipeline(一)中我们只是大体介绍了ChannelPipeline相关的知识,其实介绍的并不详细,接下来我们详细介绍一下ChannelPipeli ...
- Android开发_TextView跑马灯
关键代码: android:singleLine="true" android:ellipsize="marquee" android:focusable=&q ...
- 15 Actionbar的显示和隐藏
ActionBar 显示隐藏方法: 在布局文件中设置 theme主题 <?xml version="1.0" encoding="utf-8"?> ...
- shell的追踪与调试选项
选项: -n :不执行shell脚本,只检查语法问题.没有问题则没有输出. -v :执行shell脚本前,现将shell脚本的命令输出到屏幕上.输出一段,执行一段. -x :将使用到的所有shell脚 ...
- Servlet之HTTP状态码
HTTP 请求和 HTTP 响应消息的格式是类似的,结构如下: 初始状态行 + 回车换行符(回车+换行) 零个或多个标题行+回车换行符 一个空白行,即回车换行符 一个可选的消息主体,比如文件.查询数据 ...
- Spark技术内幕:Master的故障恢复
Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现 详细阐述了使用ZK实现的Master的HA,那么Master是如何快速故障恢复的呢? 处于 ...
- 算法之路(二)呈现O(logN)型的三个算法
典型时间复杂度 我们知道算法的执行效率,可以从它的时间复杂度来推算出一二.而典型的时间复杂度有哪些类型呢? 由上图,可以看出,除了常数时间复杂度外,logN型的算法效率是最高的.今天就介绍三种非常ea ...
- OpenCV计算物体的重心坐标(2值图像)
效果图: 代码: // FindGravity.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...