OpenGL ESの制服と変化させました

古いです

A

そこ態度

プログラマ

ユニフォーム

変数はGLSLユニフォームタイプ修飾子は、均一な変数定義された値を読み取り専用で、シェーダで変更することができない、唯一均一に塗布を通過することができます。

次のように均一な変数グローバル共有変数は、定義されたすべてのシェーダ、均一に取得することができます。

uniform float uTexPos;

均一な変数は、通常、GPU「定常領域」が格納されるメモリ領域が制限され、従って均一な限界の数があるが、複数の属性よりもはるかため、OpenGLのは、OpenGL ES 2.0 ISOは少なくとも128の頂点に均一な支持を所定所定16フラグメント(断片)均一。

頂点均一なコードの最大数をサポートしています次のとおりです。

    fun getMaxVertexUniformNum(): Int {
        var count = IntArray(1)
        GLES20.glGetIntegerv(GLES20.GL_MAX_VERTEX_UNIFORM_VECTORS, count, 0)
        return count[0]
    }

次のようにコードがサポートされているセグメントの均一な最大の数を得ることです。

    fun getMaxFragmentUniformNum(): Int {
        var count = IntArray(1)
        GLES20.glGetIntegerv(GLES20.GL_MAX_FRAGMENT_UNIFORM_VECTORS, count, 0)
        return count[0]
    }

均一な変数の値を設定します

次のように均一なプロパティハンドラのコードを取得します:

GLES20.glGetUniformLocation(programHandle, uniformName)

プログラムハンドルの代わりにprogramHandle、uniformNameは、均一な特性の名前です。

次のようにメソッドの設定値は、アンドロイドでより均一です。

GLES20.glUniform1f(location,x)
GLES20.glUniform2f(location,x,y)
GLES20.glUniform3f(location,x,y,z)
GLES20.glUniform4f(location,x,y,z,w)

セットfloat型のデータ、位置はX、Y、Z、値wは、パラメータ(X)/(X、Y)/(X、Y、Z)/(X、Y、Zに続いて、ハンドルの均一性を表します)W対応VEC2 / vec3 / vec4型均一。

次のように変数の提供VECタイプを使用することができます。

GLES20.glUniform2fv()

以下の方法を使用して設定int型のデータ:

GLES20.glUniform1i(location,x)

マットの種類を使用する方法を提供。

GLES20.glUniformMatrix2fv()

GLSLのみシェーダ間で転送される定義された変数を変化させる、変化する修飾子、頂点シェーダ(頂点シェーダ)出力、フラグメントシェーダ(フラグメントシェーダ)入力、シェーダ型宣言と一貫性です。

次のように変化する形式が定義されます。

varying float color;

次のように頂点シェーダとセットvec4(1,0,0,1)で定義された変数を変化させる、コードは次のとおりです。

attribute vec4 vPosition;
varying vec4 color;
void main() {
    color= vec4(1,0,0,1);
    gl_Position = vPosition;
}

フラグメントシェーダは、次のコードを使用して、カラー値を取得します。

precision mediump float;
varying vec4 color;
void main()
{
  gl_FragColor = color;
}

属性で均一ように、変化量、のOpenGL ES 2.0サポートは、最大数の変化コードを得る、少なくとも8存在する以下の通りであります:

fun getMaxSupportNum(): Int {
        var count = IntArray(1)
        GLES20.glGetIntegerv(GLES20.GL_MAX_VARYING_VECTORS, count, 0)
        return count[0]
    }

限られた数だけでなく、サイズの制限を変更すること、変化する可変データ32、または8 vec4又は2 MAT4マトリックスに浮上渡すことができます。

続きを読みます:

 

公開された123元の記事 ウォン称賛68 ビュー30万+

おすすめ

転載: blog.csdn.net/mengks1987/article/details/104075157