Subversion Repositories AndroidProjects

Rev

Rev 787 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
787 chris 1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
 
7
using Tao.OpenGl;
8
 
9
using BauzoidNET.math;
10
 
1451 chris 11
#pragma warning disable 0618
12
 
787 chris 13
namespace BauzoidNET.graphics.shader
14
{
15
    public class ShaderUniform
16
    {
17
            private ShaderProgram mShader;
18
            private String mName;
19
 
20
            /** Cache so that it does not need to be recreated every time. */
21
            //private FloatBuffer mMatrixCache = null;
22
 
23
            /** Constructor. */
24
            public ShaderUniform(ShaderProgram shader, String name)
25
            {
26
                    mShader = shader;
27
                    mName = name;              
28
                    //mMatrixCache = BufferUtils.newFloatBuffer(16);
29
            }
30
 
31
            /** Set a boolean value. */
32
            public void set(bool value)
33
            {
34
                    int handle = mShader.getUniformHandle(mName);
35
 
36
                    Gl.glUniform1i(handle, (value ? 1 : 0));           
37
            }
38
 
39
            /** Set an integer. */
40
            public void set(int value)
41
            {
42
                    int handle = mShader.getUniformHandle(mName);
43
 
44
                    Gl.glUniform1i(handle, value);
45
            }
46
 
47
            /** Set a float value. */
48
            public void set(float value)
49
            {
50
                    int handle = mShader.getUniformHandle(mName);
51
 
52
                    Gl.glUniform1f(handle, value);
53
            }
54
 
55
            /** Set a Vector2 value. */
56
            public void set(Vector2 value)
57
            {
58
                    int handle = mShader.getUniformHandle(mName);
59
 
60
                    Gl.glUniform2f(handle, value.x, value.y);
61
            }
62
 
63
            /** Set a Vector3 value. */
64
            public void set(Vector3 value)
65
            {
66
                    int handle = mShader.getUniformHandle(mName);
67
 
68
                    Gl.glUniform3f(handle, value.x, value.y, value.z);
69
            }
70
 
71
            /** Set a Vector4 value. */
72
            public void set(Vector4 value)
73
            {
74
                    int handle = mShader.getUniformHandle(mName);
75
 
76
                    Gl.glUniform4f(handle, value.x, value.y, value.z, value.w);
77
            }  
78
 
79
            /** Set a 4x4 Matrix. */
80
            public void set(Matrix4 value)
81
            {
82
                    int handle = mShader.getUniformHandle(mName);
83
 
84
            Gl.glUniformMatrix4fv(handle, 1, Gl.GL_FALSE, value.toGLMatrix());
85
 
86
                    /*float[] m = value.toGLMatrix();
87
                    mMatrixCache.clear();
88
                    BufferUtils.copy(m, mMatrixCache, m.length, 0);
89
                    Gl.glUniformMatrix4fv(handle, 1, false, mMatrixCache);*/
90
            }
91
    }
92
}