OpenGL ES 中着色器变量 sampler2D 并不是在宿主语言中指定的数字 0...

简介: OpenGL ES 中着色器变量 sampler2D 并不是在宿主语言中指定的数字 0... 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

OpenGL ES 中着色器变量 sampler2D 并不是在宿主语言中指定的数字 0...

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。


如题,这部分只有看得懂的才能知道下面说的是什么。


在宿主语言中给着色器程序中的全局变量设定相应的值,如下:

    // 加载可用纹理单元
    glUniform1i(_sampler0Slot, 0);
    glUniform1i(_sampler1Slot, 1);

着色器中这两个变量的声明如下:

uniform sampler2D Sampler0;
uniform sampler2D Sampler1;

当进行绘制时,渲染管线在适当时机调用相应的着色器程序,并传入相应的以上变量在宿主语言中设置的值。

着色器中这两个变量的使用如下:

void main()
{
    vec4 dst = texture2D(Sampler0, vTextureCoordOut);
    vec4 src = texture2D(Sampler1, vTextureCoordOut);
    ......

}

这里使用的 Sampler0 和 Sampler1 并不像其它类型变量一样,按宿主语言中给定的值,直接换成相应的数值,就能跑起来。

这中间渲染管线根据宿主语言中设置的数值指定的位置,找到相应的纹理单元,并把该纹理单元上挂载的纹理对象取出来,传给相应的  Sampler0 和 Sampler1 。

而且得使用着色器语言内置的取纹理方法 texture2D 等,使用传入的纹理坐标从这个纹理对象中取适当范围内的图像颜色。


这样一个顶点的颜色,就可以由这个顶点的纹理坐标从指定的纹理中取出来。

有一点不能忽略,顶点并不是一个坐标,而是三个坐标,三个坐标构成一个顶点,不过有时也只会有一个顶点的几何坐标而已。


还有一点不太明白,即然纹理中的图片上某个范围象素是有颜色的了,那么,如果没有灯光的话,不也一样可以呈现颜色,被看到吗?

那么灯光是如何与纹理相互作用的呢?

为什么还必须要烘焙图,才可以在没有灯光作用的情况下就可以被看到呢?

灯光的几个要素,在纹理中是如何起物理或化学反应的呢?

可能也许是视觉或情神反应吧!。。。。。。


不急,不急!!!象我一样,即然很郁闷,也要调整一下心态,这样才能迸发出更多的灵感,希望你也一样。

如果您知道上面的问题答案,也请帮忙回复解答,老生在此有理了也。



目录
相关文章
|
6月前
|
XML 小程序 Java
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
126 0
|
数据可视化
QT+OpenGL几何着色器
输入布局限定符可以从顶点着色器接收下列任何一个图元值: ● points:绘制GL_POINTS图元时 ● lines:绘制GL_LINES或GL_LINE_STRIP时 ● lines_adjacency:GL_ADJACENCY或GL_LINESTRIP_ADJACENCY ● triangles:GL_TRIANGLES、GL_TRIANGLE_STRIP或GL_TRIANGLE_FAN ● triangles_adjacency:GL_TRIANGLES_ADJACENCY或GL_TRIANGLE_STRIP_ADJACENCY
118 0
|
存储 编解码 算法
Opengl ES之LUT滤镜(上)
Opengl ES之连载系列
463 0
|
数据安全/隐私保护 开发者
OpenGL ES 多目标渲染(MRT)
Opengl ES连载系列
324 0
|
数据安全/隐私保护 索引
Opengl ES之纹理数组
Opengl ES连载系列
261 0
|
数据安全/隐私保护
Opengl ES之水印贴图
Opengl ES之连载系列
154 0
|
Java 数据安全/隐私保护 Android开发
Opengl ES之矩阵变换(下)
Opengl ES连载系列
133 0
|
缓存 C++
Opengl ES之FBO
Opengl ES连载系列
154 0
|
Java API 数据安全/隐私保护
Opengl ES之矩阵变换(上)
Opengl ES连载系列
150 0
|
存储
Opengl ES之踩坑记
Opengl ES之连载系列
142 0