Project

General

Profile

« Previous | Next » 

Revision 442ccafb

Added by Leszek Koltunski about 23 hours ago

major step forward in collecting all GLES stuff in a single class 'platform.GLES'

View differences:

src/main/java/org/distorted/library/effect/PostprocessEffectBlurred.kt
20 20

  
21 21
package org.distorted.library.effect
22 22

  
23
import android.opengl.GLES31
23
import org.distorted.library.platform.GLES
24 24
import org.distorted.library.main.DistortedFramebuffer
25 25
import org.distorted.library.main.InternalRenderState
26 26
import org.distorted.library.program.DistortedProgram
......
90 90
                mProgram1 = mPrograms.get(mIndex1)
91 91
                mProgram2 = mPrograms.get(mIndex2)
92 92
            }
93
            catch (ex: Exception)
93
            catch (_: Exception)
94 94
            {
95 95
                return 0
96 96
            }
......
116 116

  
117 117
        val offset = radius+radius*radius/4
118 118
        radius = (radius+1)/2
119
        GLES31.glViewport(0, 0, w.toInt(), h.toInt())
119
        GLES.glViewport(0, 0, w.toInt(), h.toInt())
120 120

  
121 121
        // horizontal blur
122 122
        for (i in 0..radius) mOffsets[i] = offsetsCache[offset+i]*offsetCorrW
......
125 125
        buffer.bindForOutput(1)
126 126
        buffer.setAsInput(0)
127 127

  
128
        GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_S, GLES31.GL_CLAMP_TO_EDGE)
129
        GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_T, GLES31.GL_CLAMP_TO_EDGE)
130

  
131
        GLES31.glColorMask(true, true, true, true)
132
        GLES31.glClearColor(1.0f, 1.0f, 1.0f, 0.0f)
133
        GLES31.glClear(GLES31.GL_COLOR_BUFFER_BIT)
134

  
135
        GLES31.glUniform1f(mProgram1!!.mUniform!![0], n)
136
        GLES31.glUniform2f(mProgram1!!.mUniform!![1], corrW, corrH)
137
        GLES31.glUniform1i(mProgram1!!.mUniform!![2], 0)
138
        GLES31.glUniform1fv(mProgram1!!.mUniform!![3], radius+1, mOffsets, 0)
139
        GLES31.glUniform1fv(mProgram1!!.mUniform!![4], radius+1, weightsCache, offset)
140
        GLES31.glUniform1i(mProgram1!!.mUniform!![5], radius)
141
        GLES31.glVertexAttribPointer(mProgram1!!.mAttribute!![0], POS_DATA_SIZE, GLES31.GL_FLOAT, false, 0, mQuadPositions)
142
        GLES31.glVertexAttribPointer(mProgram1!!.mAttribute!![1], TEX_DATA_SIZE, GLES31.GL_FLOAT, false, 0, mQuadTexture)
143
        GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4)
128
        GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_S, GLES.GL_CLAMP_TO_EDGE)
129
        GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_T, GLES.GL_CLAMP_TO_EDGE)
130

  
131
        GLES.glColorMask(true, true, true, true)
132
        GLES.glClearColor(1.0f, 1.0f, 1.0f, 0.0f)
133
        GLES.glClear(GLES.GL_COLOR_BUFFER_BIT)
134

  
135
        GLES.glUniform1f(mProgram1!!.mUniform!![0], n)
136
        GLES.glUniform2f(mProgram1!!.mUniform!![1], corrW, corrH)
137
        GLES.glUniform1i(mProgram1!!.mUniform!![2], 0)
138
        GLES.glUniform1fv(mProgram1!!.mUniform!![3], radius+1, mOffsets, 0)
139
        GLES.glUniform1fv(mProgram1!!.mUniform!![4], radius+1, weightsCache, offset)
140
        GLES.glUniform1i(mProgram1!!.mUniform!![5], radius)
141
        GLES.glVertexAttribPointer(mProgram1!!.mAttribute!![0], POS_DATA_SIZE, GLES.GL_FLOAT, false, 0, mQuadPositions)
142
        GLES.glVertexAttribPointer(mProgram1!!.mAttribute!![1], TEX_DATA_SIZE, GLES.GL_FLOAT, false, 0, mQuadTexture)
143
        GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, 4)
144 144
        mProgram1!!.stopUsingProgram()
145 145

  
146 146
        // vertical blur
......
150 150
        buffer.bindForOutput(0)
151 151
        buffer.setAsInput(1)
152 152

  
153
        GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_S, GLES31.GL_CLAMP_TO_EDGE)
154
        GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_T, GLES31.GL_CLAMP_TO_EDGE)
153
        GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_S, GLES.GL_CLAMP_TO_EDGE)
154
        GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_T, GLES.GL_CLAMP_TO_EDGE)
155 155

  
156
        GLES31.glClear(GLES31.GL_COLOR_BUFFER_BIT)
156
        GLES.glClear(GLES.GL_COLOR_BUFFER_BIT)
157 157

  
158
        GLES31.glUniform1f(mProgram2!!.mUniform!![0], n)
159
        GLES31.glUniform2f(mProgram2!!.mUniform!![1], corrW, corrH)
160
        GLES31.glUniform1i(mProgram2!!.mUniform!![2], 0)
161
        GLES31.glUniform1fv(mProgram2!!.mUniform!![3], radius+1, mOffsets, 0)
162
        GLES31.glUniform1fv(mProgram2!!.mUniform!![4], radius+1, weightsCache, offset)
163
        GLES31.glUniform1i(mProgram2!!.mUniform!![5], radius)
164
        GLES31.glVertexAttribPointer(mProgram2!!.mAttribute!![0], POS_DATA_SIZE, GLES31.GL_FLOAT, false, 0, mQuadPositions)
165
        GLES31.glVertexAttribPointer(mProgram2!!.mAttribute!![1], TEX_DATA_SIZE, GLES31.GL_FLOAT, false, 0, mQuadTexture)
166
        GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4)
158
        GLES.glUniform1f(mProgram2!!.mUniform!![0], n)
159
        GLES.glUniform2f(mProgram2!!.mUniform!![1], corrW, corrH)
160
        GLES.glUniform1i(mProgram2!!.mUniform!![2], 0)
161
        GLES.glUniform1fv(mProgram2!!.mUniform!![3], radius+1, mOffsets, 0)
162
        GLES.glUniform1fv(mProgram2!!.mUniform!![4], radius+1, weightsCache, offset)
163
        GLES.glUniform1i(mProgram2!!.mUniform!![5], radius)
164
        GLES.glVertexAttribPointer(mProgram2!!.mAttribute!![0], POS_DATA_SIZE, GLES.GL_FLOAT, false, 0, mQuadPositions)
165
        GLES.glVertexAttribPointer(mProgram2!!.mAttribute!![1], TEX_DATA_SIZE, GLES.GL_FLOAT, false, 0, mQuadTexture)
166
        GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, 4)
167 167
        mProgram1!!.stopUsingProgram()
168 168

  
169 169
        InternalRenderState.unuseStencilMark()
src/main/java/org/distorted/library/effectqueue/EffectQueueFragment.kt
20 20

  
21 21
package org.distorted.library.effectqueue
22 22

  
23
import android.opengl.GLES31
23
import org.distorted.library.platform.GLES
24 24
import org.distorted.library.effect.EffectType
25 25
import org.distorted.library.effect.FragmentEffect
26 26
import org.distorted.library.message.EffectMessageSender
......
42 42
        ///////////////////////////////////////////////////////////////////////////////////////////
43 43
        fun uniforms(mProgramH: Int, variant: Int)
44 44
        {
45
            mNumEffectsH[variant]  = GLES31.glGetUniformLocation(mProgramH, "fNumEffects")
46
            mIntUniformsH[variant] = GLES31.glGetUniformLocation(mProgramH, "fProperties")
47
            mFloUniformsH[variant] = GLES31.glGetUniformLocation(mProgramH, "fUniforms")
45
            mNumEffectsH[variant]  = GLES.glGetUniformLocation(mProgramH, "fNumEffects")
46
            mIntUniformsH[variant] = GLES.glGetUniformLocation(mProgramH, "fProperties")
47
            mFloUniformsH[variant] = GLES.glGetUniformLocation(mProgramH, "fUniforms")
48 48
        }
49 49
    }
50 50
    ///////////////////////////////////////////////////////////////////////////////////////////////
......
68 68
    ///////////////////////////////////////////////////////////////////////////////////////////////
69 69
    fun send(variant: Int)
70 70
    {
71
        GLES31.glUniform1i(mNumEffectsH[variant],numEffects)
71
        GLES.glUniform1i(mNumEffectsH[variant],numEffects)
72 72

  
73 73
        if (numEffects>0)
74 74
        {
75 75
            val arrayI = mUBI!!.backingArray
76 76
            val arrayF = mUBF!!.backingArray
77
            GLES31.glUniform4iv(mIntUniformsH[variant],numEffects,arrayI,0)
78
            GLES31.glUniform4fv(mFloUniformsH[variant],(NUM_FLOAT_UNIFORMS/4)*numEffects,arrayF,0)
77
            GLES.glUniform4iv(mIntUniformsH[variant],numEffects,arrayI,0)
78
            GLES.glUniform4fv(mFloUniformsH[variant],(NUM_FLOAT_UNIFORMS/4)*numEffects,arrayF,0)
79 79
        }
80 80
    }
81 81
}
src/main/java/org/distorted/library/effectqueue/EffectQueueMatrix.kt
20 20

  
21 21
package org.distorted.library.effectqueue
22 22

  
23
import android.opengl.GLES31
23
import org.distorted.library.platform.GLES
24 24
import org.distorted.library.effect.EffectType
25 25
import org.distorted.library.effect.MatrixEffect
26 26
import org.distorted.library.helpers.MatrixHelper.multiply
......
48 48
        ///////////////////////////////////////////////////////////////////////////////////////////
49 49
        fun uniforms(mProgramH: Int, variant: Int)
50 50
        {
51
            mMVPMatrixH[variant] = GLES31.glGetUniformLocation(mProgramH, "u_MVPMatrix")
52
            mMVMatrixPH[variant] = GLES31.glGetUniformLocation(mProgramH, "u_MVMatrixP")
53
            mMVMatrixVH[variant] = GLES31.glGetUniformLocation(mProgramH, "u_MVMatrixV")
51
            mMVPMatrixH[variant] = GLES.glGetUniformLocation(mProgramH, "u_MVPMatrix")
52
            mMVMatrixPH[variant] = GLES.glGetUniformLocation(mProgramH, "u_MVMatrixP")
53
            mMVMatrixVH[variant] = GLES.glGetUniformLocation(mProgramH, "u_MVMatrixV")
54 54
        }
55 55
    }
56 56

  
......
116 116
        // combined Model-View-Projection matrix
117 117
        multiply(mMVPMatrix, projection, mModelViewMatrixP)
118 118

  
119
        GLES31.glUniformMatrix4fv(mMVMatrixVH[variant], 1, false, mModelViewMatrixV, 0)
120
        GLES31.glUniformMatrix4fv(mMVMatrixPH[variant], 1, false, mModelViewMatrixP, 0)
121
        GLES31.glUniformMatrix4fv(mMVPMatrixH[variant], 1, false, mMVPMatrix       , 0)
119
        GLES.glUniformMatrix4fv(mMVMatrixVH[variant], 1, false, mModelViewMatrixV, 0)
120
        GLES.glUniformMatrix4fv(mMVMatrixPH[variant], 1, false, mModelViewMatrixP, 0)
121
        GLES.glUniformMatrix4fv(mMVPMatrixH[variant], 1, false, mMVPMatrix       , 0)
122 122
    }
123 123
}
src/main/java/org/distorted/library/effectqueue/EffectQueuePostprocess.kt
20 20

  
21 21
package org.distorted.library.effectqueue
22 22

  
23
import android.opengl.GLES31
23
import org.distorted.library.platform.GLES
24 24
import org.distorted.library.effect.EffectType
25 25
import org.distorted.library.effect.PostprocessEffect
26 26
import org.distorted.library.effect.VertexEffect
......
95 95
            mPreProgramH = mPreProgram!!.programHandle
96 96
            getUniforms(mPreProgramH, 2)
97 97
            MeshBase.getUniforms(mPreProgramH, 2)
98
            mPreColorH = GLES31.glGetUniformLocation(mPreProgramH, "u_Color")
99
            mPreTextureH = GLES31.glGetUniformLocation(mPreProgramH, "u_Texture")
98
            mPreColorH = GLES.glGetUniformLocation(mPreProgramH, "u_Color")
99
            mPreTextureH = GLES.glGetUniformLocation(mPreProgramH, "u_Texture")
100 100
        }
101 101
    }
102 102

  
......
165 165

  
166 166
        InternalRenderState.setUpStencilMark(mA != 0.0f)
167 167
        InternalRenderState.disableBlending()
168
        if (!mUseHaloDepth) GLES31.glDepthMask(false)
168
        if (!mUseHaloDepth) GLES.glDepthMask(false)
169 169

  
170
        GLES31.glViewport(0,0,width,height)
170
        GLES.glViewport(0,0,width,height)
171 171

  
172 172
        mPreProgram!!.useProgram()
173 173

  
......
183 183

  
184 184
        if (mA != 0.0f)
185 185
        {
186
            GLES31.glUniform4f(mPreColorH,mR,mG,mB,mA)
187
            GLES31.glUniform1i(mPreTextureH, 0)
186
            GLES.glUniform4f(mPreColorH,mR,mG,mB,mA)
187
            GLES.glUniform1i(mPreTextureH, 0)
188 188
        }
189 189

  
190
        GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, mesh.getNumVertices() )
190
        GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, mesh.getNumVertices() )
191 191
        mPreProgram!!.stopUsingProgram()
192 192

  
193 193
        InternalRenderState.restoreBlending()
194 194
        InternalRenderState.unsetUpStencilMark()
195
        if (!mUseHaloDepth) GLES31.glDepthMask(true)
195
        if (!mUseHaloDepth) GLES.glDepthMask(true)
196 196

  
197 197
        return 1
198 198
    }
......
203 203
        var numRenders = 0
204 204
        val array = mUBF!!.backingArray
205 205

  
206
        GLES31.glDisable(GLES31.GL_BLEND)
206
        GLES.glDisable(GLES.GL_BLEND)
207 207

  
208 208
        for (i in 0..<numEffects)
209 209
            numRenders += (mEffects[i] as PostprocessEffect).postprocess(array,NUM_FLOAT_UNIFORMS*i, buffer)
210 210

  
211
        GLES31.glEnable(GLES31.GL_BLEND)
211
        GLES.glEnable(GLES.GL_BLEND)
212 212

  
213 213
        return numRenders
214 214
    }
src/main/java/org/distorted/library/effectqueue/EffectQueueVertex.kt
20 20

  
21 21
package org.distorted.library.effectqueue
22 22

  
23
import android.opengl.GLES31
23
import org.distorted.library.platform.GLES
24 24
import org.distorted.library.effect.EffectType
25 25
import org.distorted.library.effect.VertexEffect
26 26
import org.distorted.library.message.EffectMessageSender
......
48 48
        ///////////////////////////////////////////////////////////////////////////////////////////
49 49
        fun uniforms(mProgramH: Int, variant: Int)
50 50
        {
51
            mNumEffectsH[variant]   = GLES31.glGetUniformLocation(mProgramH, "vNumEffects")
52
            mInflateH[variant]      = GLES31.glGetUniformLocation(mProgramH, "u_Inflate")
53
            mIntBlockIndex[variant] = GLES31.glGetUniformBlockIndex(mProgramH, "vUniformProperties")
54
            mFloBlockIndex[variant] = GLES31.glGetUniformBlockIndex(mProgramH, "vUniformFloats")
51
            mNumEffectsH[variant]   = GLES.glGetUniformLocation(mProgramH, "vNumEffects")
52
            mInflateH[variant]      = GLES.glGetUniformLocation(mProgramH, "u_Inflate")
53
            mIntBlockIndex[variant] = GLES.glGetUniformBlockIndex(mProgramH, "vUniformProperties")
54
            mFloBlockIndex[variant] = GLES.glGetUniformBlockIndex(mProgramH, "vUniformFloats")
55 55
        }
56 56
    }
57 57

  
......
84 84
    */
85 85
    fun send(inflate: Float, programH: Int, variant: Int)
86 86
    {
87
        GLES31.glUniform1i(mNumEffectsH[variant], numEffects)
88
        GLES31.glUniform1f(mInflateH[variant], inflate)
87
        GLES.glUniform1i(mNumEffectsH[variant], numEffects)
88
        GLES.glUniform1f(mInflateH[variant], inflate)
89 89

  
90 90
        if (numEffects>0)
91 91
        {
92
            GLES31.glBindBufferBase(GLES31.GL_UNIFORM_BUFFER,VERT_INT_UBO_BINDING,mUBI!!.index)
93
            GLES31.glUniformBlockBinding(programH, mIntBlockIndex[variant],VERT_INT_UBO_BINDING)
94
            GLES31.glBindBufferBase(GLES31.GL_UNIFORM_BUFFER,VERT_FLO_UBO_BINDING,mUBF!!.index)
95
            GLES31.glUniformBlockBinding(programH,mFloBlockIndex[variant],VERT_FLO_UBO_BINDING)
92
            GLES.glBindBufferBase(GLES.GL_UNIFORM_BUFFER,VERT_INT_UBO_BINDING,mUBI!!.index)
93
            GLES.glUniformBlockBinding(programH, mIntBlockIndex[variant],VERT_INT_UBO_BINDING)
94
            GLES.glBindBufferBase(GLES.GL_UNIFORM_BUFFER,VERT_FLO_UBO_BINDING,mUBF!!.index)
95
            GLES.glUniformBlockBinding(programH,mFloBlockIndex[variant],VERT_FLO_UBO_BINDING)
96 96
        }
97 97
    }
98 98
}
src/main/java/org/distorted/library/main/DistortedFramebuffer.kt
19 19
///////////////////////////////////////////////////////////////////////////////////////////////////
20 20
package org.distorted.library.main
21 21

  
22
import android.opengl.GLES31
22
import org.distorted.library.platform.GLES
23 23

  
24 24
///////////////////////////////////////////////////////////////////////////////////////////////////
25 25
/**
......
46 46
        // COLOR
47 47
        if( mColorCreated==NOT_CREATED_YET )
48 48
        {
49
            GLES31.glGenTextures(mNumFBOs*mNumColors, mColorH, 0)
50
            GLES31.glGenFramebuffers(mNumFBOs, mFBOH, 0)
49
            GLES.glGenTextures(mNumFBOs*mNumColors, mColorH, 0)
50
            GLES.glGenFramebuffers(mNumFBOs, mFBOH, 0)
51 51

  
52 52
            for (i in 0 until mNumFBOs)
53 53
            {
54
                GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, mFBOH[i])
54
                GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, mFBOH[i])
55 55

  
56 56
                for (j in 0 until mNumColors)
57 57
                {
58
                    GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, mColorH!![i*mNumColors+j])
59
                    GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_S, GLES31.GL_REPEAT)
60
                    GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_T, GLES31.GL_REPEAT)
61
                    GLES31.glTexParameterf(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_MIN_FILTER, GLES31.GL_NEAREST.toFloat())
62
                    GLES31.glTexParameterf(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_MAG_FILTER, GLES31.GL_LINEAR.toFloat())
63
                    GLES31.glTexImage2D(GLES31.GL_TEXTURE_2D, 0, GLES31.GL_RGBA, mRealWidth, mRealHeight, 0, GLES31.GL_RGBA, GLES31.GL_UNSIGNED_BYTE, null)
58
                    GLES.glBindTexture(GLES.GL_TEXTURE_2D, mColorH!![i*mNumColors+j])
59
                    GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_S, GLES.GL_REPEAT)
60
                    GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_T, GLES.GL_REPEAT)
61
                    GLES.glTexParameterf(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_MIN_FILTER, GLES.GL_NEAREST.toFloat())
62
                    GLES.glTexParameterf(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_MAG_FILTER, GLES.GL_LINEAR.toFloat())
63
                    GLES.glTexImage2D(GLES.GL_TEXTURE_2D, 0, GLES.GL_RGBA, mRealWidth, mRealHeight, 0, GLES.GL_RGBA, GLES.GL_UNSIGNED_BYTE, null)
64 64
                }
65 65

  
66
                GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_COLOR_ATTACHMENT0, GLES31.GL_TEXTURE_2D, mColorH!![i*mNumColors], 0)
67
                GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, 0)
66
                GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_COLOR_ATTACHMENT0, GLES.GL_TEXTURE_2D, mColorH!![i*mNumColors], 0)
67
                GLES.glBindTexture(GLES.GL_TEXTURE_2D, 0)
68 68
            }
69 69

  
70 70
            // TODO
71 71
            mColorCreated = checkStatus("color")
72
            GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, 0)
72
            GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, 0)
73 73
        }
74 74

  
75 75
        //////////////////////////////////////////////////////////////
76 76
        // DEPTH / STENCIL
77 77
        if( mDepthStencilCreated==NOT_CREATED_YET )  // we need to create a new DEPTH or STENCIL attachment
78 78
        {
79
            GLES31.glGenTextures(mNumFBOs, mDepthStencilH, 0)
79
            GLES.glGenTextures(mNumFBOs, mDepthStencilH, 0)
80 80

  
81 81
            for (i in 0 until mNumFBOs)
82 82
            {
83
                GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, mDepthStencilH!![i])
84
                GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_S, GLES31.GL_REPEAT)
85
                GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_T, GLES31.GL_REPEAT)
86
                GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_MIN_FILTER, GLES31.GL_NEAREST)
87
                GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_MAG_FILTER, GLES31.GL_NEAREST)
83
                GLES.glBindTexture(GLES.GL_TEXTURE_2D, mDepthStencilH!![i])
84
                GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_S, GLES.GL_REPEAT)
85
                GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_T, GLES.GL_REPEAT)
86
                GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_MIN_FILTER, GLES.GL_NEAREST)
87
                GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_MAG_FILTER, GLES.GL_NEAREST)
88 88

  
89 89
                if (mDepthStencil==DEPTH_NO_STENCIL)
90 90
                {
91
                    GLES31.glTexImage2D(GLES31.GL_TEXTURE_2D, 0, GLES31.GL_DEPTH_COMPONENT, mRealWidth, mRealHeight, 0, GLES31.GL_DEPTH_COMPONENT, GLES31.GL_UNSIGNED_INT, null)
91
                    GLES.glTexImage2D(GLES.GL_TEXTURE_2D, 0, GLES.GL_DEPTH_COMPONENT, mRealWidth, mRealHeight, 0, GLES.GL_DEPTH_COMPONENT, GLES.GL_UNSIGNED_INT, null)
92 92
                }
93 93
                else if (mDepthStencil==BOTH_DEPTH_STENCIL)
94 94
                {
95
                    GLES31.glTexImage2D(GLES31.GL_TEXTURE_2D, 0, GLES31.GL_DEPTH24_STENCIL8, mRealWidth, mRealHeight, 0, GLES31.GL_DEPTH_STENCIL, GLES31.GL_UNSIGNED_INT_24_8, null)
95
                    GLES.glTexImage2D(GLES.GL_TEXTURE_2D, 0, GLES.GL_DEPTH24_STENCIL8, mRealWidth, mRealHeight, 0, GLES.GL_DEPTH_STENCIL, GLES.GL_UNSIGNED_INT_24_8, null)
96 96
                }
97 97
            }
98
            GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, 0)
98
            GLES.glBindTexture(GLES.GL_TEXTURE_2D, 0)
99 99

  
100 100
            for (i in 0 until mNumFBOs)
101 101
            {
102
                GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, mFBOH[i])
102
                GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, mFBOH[i])
103 103

  
104 104
                if (mDepthStencil==DEPTH_NO_STENCIL)
105 105
                {
106
                    GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_DEPTH_ATTACHMENT, GLES31.GL_TEXTURE_2D, mDepthStencilH!![i], 0)
106
                    GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_DEPTH_ATTACHMENT, GLES.GL_TEXTURE_2D, mDepthStencilH!![i], 0)
107 107
                }
108 108
                else if (mDepthStencil==BOTH_DEPTH_STENCIL)
109 109
                {
110
                    GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_DEPTH_STENCIL_ATTACHMENT, GLES31.GL_TEXTURE_2D, mDepthStencilH!![i], 0)
110
                    GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_DEPTH_STENCIL_ATTACHMENT, GLES.GL_TEXTURE_2D, mDepthStencilH!![i], 0)
111 111
                }
112 112
            }
113 113

  
114 114
            // TODO
115 115
            mDepthStencilCreated = checkStatus("depth")
116
            GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, 0)
116
            GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, 0)
117 117
        }
118 118

  
119 119
        //////////////////////////////////////////////////////////////
......
128 128

  
129 129
            for (i in 0 until mNumFBOs)
130 130
            {
131
                GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, mFBOH[i])
132
                GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_DEPTH_ATTACHMENT, GLES31.GL_TEXTURE_2D, 0, 0)
133
                GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_DEPTH_STENCIL_ATTACHMENT, GLES31.GL_TEXTURE_2D, 0, 0)
131
                GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, mFBOH[i])
132
                GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_DEPTH_ATTACHMENT, GLES.GL_TEXTURE_2D, 0, 0)
133
                GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_DEPTH_STENCIL_ATTACHMENT, GLES.GL_TEXTURE_2D, 0, 0)
134 134
                mDepthStencilH!![i] = 0
135 135
            }
136 136

  
137
            GLES31.glDeleteTextures(mNumFBOs, mDepthStencilH, 0)
138
            GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, 0)
137
            GLES.glDeleteTextures(mNumFBOs, mDepthStencilH, 0)
138
            GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, 0)
139 139
        }
140 140
    }
141 141

  
......
143 143
    // TODO
144 144
    private fun checkStatus(message: String): Int
145 145
    {
146
        val status = GLES31.glCheckFramebufferStatus(GLES31.GL_FRAMEBUFFER)
146
        val status = GLES.glCheckFramebufferStatus(GLES.GL_FRAMEBUFFER)
147 147

  
148
        if (status!=GLES31.GL_FRAMEBUFFER_COMPLETE)
148
        if (status!=GLES.GL_FRAMEBUFFER_COMPLETE)
149 149
        {
150 150
            DistortedLibrary.logMessage("DistortedFramebuffer: FRAMEBUFFER INCOMPLETE, $message error=$status")
151 151

  
152
            GLES31.glDeleteTextures(1, mColorH, 0)
153
            GLES31.glDeleteTextures(1, mDepthStencilH, 0)
154
            GLES31.glDeleteFramebuffers(1, mFBOH, 0)
152
            GLES.glDeleteTextures(1, mColorH, 0)
153
            GLES.glDeleteTextures(1, mDepthStencilH, 0)
154
            GLES.glDeleteFramebuffers(1, mFBOH, 0)
155 155
            mFBOH[0] = 0
156 156

  
157 157
            return FAILED_TO_CREATE
......
168 168

  
169 169
        if( colorH[0]>0 )
170 170
        {
171
            GLES31.glDeleteTextures(mNumFBOs*mNumColors, colorH, 0)
171
            GLES.glDeleteTextures(mNumFBOs*mNumColors, colorH, 0)
172 172
            mColorCreated = NOT_CREATED_YET
173 173
            for (i in 0 until mNumFBOs*mNumColors) colorH[i] = 0
174 174
        }
......
177 177

  
178 178
        if( depthStencilH[0]>0 )
179 179
        {
180
            GLES31.glDeleteTextures(mNumFBOs, depthStencilH, 0)
180
            GLES.glDeleteTextures(mNumFBOs, depthStencilH, 0)
181 181
            mDepthStencilCreated = NOT_CREATED_YET
182 182
            for (i in 0 until mNumFBOs) depthStencilH[i] = 0
183 183
        }
184 184

  
185 185
        if( mNumFBOs>0 && mFBOH[0]>0 )
186 186
        {
187
            GLES31.glDeleteFramebuffers(mNumFBOs, mFBOH, 0)
187
            GLES.glDeleteFramebuffers(mNumFBOs, mFBOH, 0)
188 188
        }
189 189

  
190 190
        for (i in 0 until mNumFBOs)
......
222 222

  
223 223
            if( colorH>0 )
224 224
            {
225
                GLES31.glActiveTexture(GLES31.GL_TEXTURE0)
226
                GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, colorH)
225
                GLES.glActiveTexture(GLES.GL_TEXTURE0)
226
                GLES.glBindTexture(GLES.GL_TEXTURE_2D, colorH)
227 227
                return true
228 228
            }
229 229
        }
......
277 277

  
278 278
            if( colorH>0 )
279 279
            {
280
                GLES31.glActiveTexture(GLES31.GL_TEXTURE0)
281
                GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, colorH)
280
                GLES.glActiveTexture(GLES.GL_TEXTURE0)
281
                GLES.glBindTexture(GLES.GL_TEXTURE_2D, colorH)
282 282
                return true
283 283
            }
284 284
        }
......
299 299
            val colorH = mColorH!![2*mCurrFBO + texture]
300 300

  
301 301
            if( colorH>0 )
302
                GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_COLOR_ATTACHMENT0, GLES31.GL_TEXTURE_2D, colorH, 0)
302
                GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_COLOR_ATTACHMENT0, GLES.GL_TEXTURE_2D, colorH, 0)
303 303
        }
304 304
    }
305 305

  
......
353 353
    {
354 354
        if( fbo in 0..<mNumFBOs )
355 355
        {
356
            GLES31.glBindFramebuffer(GLES31.GL_READ_FRAMEBUFFER, mFBOH[fbo])
356
            GLES.glBindFramebuffer(GLES.GL_READ_FRAMEBUFFER, mFBOH[fbo])
357 357
            return true
358 358
        }
359 359

  
src/main/java/org/distorted/library/main/DistortedLibrary.kt
19 19
///////////////////////////////////////////////////////////////////////////////////////////////////
20 20
package org.distorted.library.main
21 21

  
22
import android.opengl.GLES31
22
import org.distorted.library.platform.GLES
23 23
import org.distorted.library.effect.Effect
24 24
import org.distorted.library.effect.EffectType
25 25
import org.distorted.library.effect.FragmentEffect
......
319 319
        mMainProgramH = mMainProgram!!.programHandle
320 320
        EffectQueue.getUniforms(mMainProgramH, 0)
321 321
        MeshBase.getUniforms(mMainProgramH, 0)
322
        mMainTextureH = GLES31.glGetUniformLocation(mMainProgramH, "u_Texture")
323
        mTransformFeedbackH = GLES31.glGetUniformLocation(mMainProgramH, "u_TransformFeedback")
322
        mMainTextureH = GLES.glGetUniformLocation(mMainProgramH, "u_Texture")
323
        mTransformFeedbackH = GLES.glGetUniformLocation(mMainProgramH, "u_TransformFeedback")
324 324

  
325 325
        // BLIT PROGRAM ////////////////////////////////////
326 326
        val blitVertStream = Blit.vertex()
......
337 337
        }
338 338

  
339 339
        val blitProgramH = mBlitProgram!!.programHandle
340
        mBlitTextureH = GLES31.glGetUniformLocation(blitProgramH, "u_Texture")
341
        mBlitDepthH = GLES31.glGetUniformLocation(blitProgramH, "u_Depth")
340
        mBlitTextureH = GLES.glGetUniformLocation(blitProgramH, "u_Texture")
341
        mBlitDepthH = GLES.glGetUniformLocation(blitProgramH, "u_Depth")
342 342

  
343 343
        // BLIT DEPTH PROGRAM ////////////////////////////////////
344 344
        val blitDepthVertStream = BlitDepth.vertex()
......
355 355
        }
356 356

  
357 357
        val blitDepthProgramH = mBlitDepthProgram!!.programHandle
358
        mBlitDepthTextureH = GLES31.glGetUniformLocation(blitDepthProgramH, "u_Texture")
359
        mBlitDepthDepthTextureH = GLES31.glGetUniformLocation(blitDepthProgramH, "u_DepthTexture")
360
        mBlitDepthTexCorrH = GLES31.glGetUniformLocation(blitDepthProgramH, "u_TexCorr")
358
        mBlitDepthTextureH = GLES.glGetUniformLocation(blitDepthProgramH, "u_Texture")
359
        mBlitDepthDepthTextureH = GLES.glGetUniformLocation(blitDepthProgramH, "u_DepthTexture")
360
        mBlitDepthTexCorrH = GLES.glGetUniformLocation(blitDepthProgramH, "u_TexCorr")
361 361
    }
362 362

  
363 363
    ///////////////////////////////////////////////////////////////////////////////////////////////////
......
377 377
        }
378 378

  
379 379
        val normalProgramH = mNormalProgram!!.programHandle
380
        mNormalProjectionH = GLES31.glGetUniformLocation(normalProgramH, "u_Projection")
380
        mNormalProjectionH = GLES.glGetUniformLocation(normalProgramH, "u_Projection")
381 381
    }
382 382

  
383 383
    ///////////////////////////////////////////////////////////////////////////////////////////////////
......
452 452
        mMainOITProgramH = mMainOITProgram!!.programHandle
453 453
        EffectQueue.getUniforms(mMainOITProgramH, 1)
454 454
        MeshBase.getUniforms(mMainOITProgramH, 1)
455
        mMainOITTextureH = GLES31.glGetUniformLocation(mMainOITProgramH, "u_Texture")
456
        mMainOITSizeH = GLES31.glGetUniformLocation(mMainOITProgramH, "u_Size")
457
        mMainOITNumRecordsH = GLES31.glGetUniformLocation(mMainOITProgramH, "u_numRecords")
455
        mMainOITTextureH = GLES.glGetUniformLocation(mMainOITProgramH, "u_Texture")
456
        mMainOITSizeH = GLES.glGetUniformLocation(mMainOITProgramH, "u_Size")
457
        mMainOITNumRecordsH = GLES.glGetUniformLocation(mMainOITProgramH, "u_numRecords")
458 458

  
459 459
        // OIT CLEAR PROGRAM ////////////////////////////////////
460 460
        val oitClearVertStream = Oit.vertex()
......
471 471
        }
472 472

  
473 473
        val oitClearProgramH = mOITClearProgram!!.programHandle
474
        mOITClearDepthH = GLES31.glGetUniformLocation(oitClearProgramH, "u_Depth")
475
        mOITClearTexCorrH = GLES31.glGetUniformLocation(oitClearProgramH, "u_TexCorr")
476
        mOITClearSizeH = GLES31.glGetUniformLocation(oitClearProgramH, "u_Size")
474
        mOITClearDepthH = GLES.glGetUniformLocation(oitClearProgramH, "u_Depth")
475
        mOITClearTexCorrH = GLES.glGetUniformLocation(oitClearProgramH, "u_TexCorr")
476
        mOITClearSizeH = GLES.glGetUniformLocation(oitClearProgramH, "u_Size")
477 477

  
478 478
        // OIT BUILD PROGRAM ////////////////////////////////////
479 479
        val oitBuildVertStream = Oit.vertex()
......
490 490
        }
491 491

  
492 492
        val oitBuildProgramH = mOITBuildProgram!!.programHandle
493
        mOITBuildTextureH      = GLES31.glGetUniformLocation(oitBuildProgramH, "u_Texture")
494
        mOITBuildDepthTextureH = GLES31.glGetUniformLocation(oitBuildProgramH, "u_DepthTexture")
495
        mOITBuildDepthH        = GLES31.glGetUniformLocation(oitBuildProgramH, "u_Depth")
496
        mOITBuildTexCorrH      = GLES31.glGetUniformLocation(oitBuildProgramH, "u_TexCorr")
497
        mOITBuildSizeH         = GLES31.glGetUniformLocation(oitBuildProgramH, "u_Size")
498
        mOITBuildNumRecordsH   = GLES31.glGetUniformLocation(oitBuildProgramH, "u_numRecords")
493
        mOITBuildTextureH      = GLES.glGetUniformLocation(oitBuildProgramH, "u_Texture")
494
        mOITBuildDepthTextureH = GLES.glGetUniformLocation(oitBuildProgramH, "u_DepthTexture")
495
        mOITBuildDepthH        = GLES.glGetUniformLocation(oitBuildProgramH, "u_Depth")
496
        mOITBuildTexCorrH      = GLES.glGetUniformLocation(oitBuildProgramH, "u_TexCorr")
497
        mOITBuildSizeH         = GLES.glGetUniformLocation(oitBuildProgramH, "u_Size")
498
        mOITBuildNumRecordsH   = GLES.glGetUniformLocation(oitBuildProgramH, "u_numRecords")
499 499

  
500 500
        // OIT COLLAPSE PROGRAM ///////////////////////////
501 501
        val oitCollapseVertStream = Oit.vertex()
......
512 512
        }
513 513

  
514 514
        val oitCollapseProgramH = mOITCollapseProgram!!.programHandle
515
        mOITCollapseDepthTextureH = GLES31.glGetUniformLocation(oitCollapseProgramH, "u_DepthTexture")
516
        mOITCollapseDepthH        = GLES31.glGetUniformLocation(oitCollapseProgramH, "u_Depth")
517
        mOITCollapseTexCorrH      = GLES31.glGetUniformLocation(oitCollapseProgramH, "u_TexCorr")
518
        mOITCollapseSizeH         = GLES31.glGetUniformLocation(oitCollapseProgramH, "u_Size")
515
        mOITCollapseDepthTextureH = GLES.glGetUniformLocation(oitCollapseProgramH, "u_DepthTexture")
516
        mOITCollapseDepthH        = GLES.glGetUniformLocation(oitCollapseProgramH, "u_Depth")
517
        mOITCollapseTexCorrH      = GLES.glGetUniformLocation(oitCollapseProgramH, "u_TexCorr")
518
        mOITCollapseSizeH         = GLES.glGetUniformLocation(oitCollapseProgramH, "u_Size")
519 519

  
520 520
        // OIT RENDER PROGRAM ///////////////////////////
521 521
        val oitRenderVertStream = Oit.vertex()
......
532 532
        }
533 533

  
534 534
        val oitRenderProgramH = mOITRenderProgram!!.programHandle
535
        mOITRenderDepthH   = GLES31.glGetUniformLocation(oitRenderProgramH, "u_Depth")
536
        mOITRenderTexCorrH = GLES31.glGetUniformLocation(oitRenderProgramH, "u_TexCorr")
537
        mOITRenderSizeH    = GLES31.glGetUniformLocation(oitRenderProgramH, "u_Size")
535
        mOITRenderDepthH   = GLES.glGetUniformLocation(oitRenderProgramH, "u_Depth")
536
        mOITRenderTexCorrH = GLES.glGetUniformLocation(oitRenderProgramH, "u_TexCorr")
537
        mOITRenderSizeH    = GLES.glGetUniformLocation(oitRenderProgramH, "u_Size")
538 538
    }
539 539

  
540 540
    ///////////////////////////////////////////////////////////////////////////////////////////////////
......
556 556
        val num = mesh.getNumVertices()
557 557
        val tfo = mesh.tFO
558 558

  
559
        GLES31.glUniform1i(mTransformFeedbackH, 1)
560
        GLES31.glBindBufferBase(GLES31.GL_TRANSFORM_FEEDBACK_BUFFER, 0, tfo)
561
        GLES31.glBeginTransformFeedback(GLES31.GL_POINTS)
559
        GLES.glUniform1i(mTransformFeedbackH, 1)
560
        GLES.glBindBufferBase(GLES.GL_TRANSFORM_FEEDBACK_BUFFER, 0, tfo)
561
        GLES.glBeginTransformFeedback(GLES.GL_POINTS)
562 562
        switchOffDrawing()
563
        GLES31.glDrawArrays(GLES31.GL_POINTS, 0, num)
563
        GLES.glDrawArrays(GLES.GL_POINTS, 0, num)
564 564
        restoreDrawing()
565
        GLES31.glEndTransformFeedback()
566
        GLES31.glBindBufferBase(GLES31.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0)
567
        GLES31.glUniform1i(mTransformFeedbackH, 0)
565
        GLES.glEndTransformFeedback()
566
        GLES.glBindBufferBase(GLES.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0)
567
        GLES.glUniform1i(mTransformFeedbackH, 0)
568 568

  
569 569
        mNormalProgram!!.useProgram()
570
        GLES31.glUniformMatrix4fv(mNormalProjectionH, 1, false, projection, 0)
570
        GLES.glUniformMatrix4fv(mNormalProjectionH, 1, false, projection, 0)
571 571
        mesh.bindTransformAttribs(mNormalProgram!!)
572
        GLES31.glLineWidth(8.0f)
573
        GLES31.glDrawArrays(GLES31.GL_LINES, 0, 2*num)
572
        GLES.glLineWidth(8.0f)
573
        GLES.glDrawArrays(GLES.GL_LINES, 0, 2*num)
574 574
        mNormalProgram!!.stopUsingProgram()
575 575
    }
576 576

  
......
602 602
        queue.send(0.0f, mFullProgramH, 3)
603 603
        mesh.send(mFullProgramH, 3)
604 604

  
605
        GLES31.glBindBufferBase(GLES31.GL_TRANSFORM_FEEDBACK_BUFFER, 0, tfo)
606
        GLES31.glBeginTransformFeedback(GLES31.GL_POINTS)
605
        GLES.glBindBufferBase(GLES.GL_TRANSFORM_FEEDBACK_BUFFER, 0, tfo)
606
        GLES.glBeginTransformFeedback(GLES.GL_POINTS)
607 607
        switchOffDrawing()
608
        GLES31.glDrawArrays(GLES31.GL_POINTS, 0, num)
608
        GLES.glDrawArrays(GLES.GL_POINTS, 0, num)
609 609
        restoreDrawing()
610
        GLES31.glEndTransformFeedback()
610
        GLES.glEndTransformFeedback()
611 611
        mesh.copyTransformToVertex()
612
        GLES31.glBindBufferBase(GLES31.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0)
612
        GLES.glBindBufferBase(GLES.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0)
613 613
        mFullProgram!!.stopUsingProgram()
614 614
    }
615 615

  
......
623 623
            val queues = effects.queues
624 624

  
625 625
            compute(queues, currTime, step)
626
            GLES31.glViewport(0, 0, w, h)
626
            GLES.glViewport(0, 0, w, h)
627 627

  
628 628
            mMainOITProgram!!.useProgram()
629
            GLES31.glUniform1i(mMainOITTextureH, 0)
630
            GLES31.glUniform2ui(mMainOITSizeH, w, h)
631
            GLES31.glUniform1ui(mMainOITNumRecordsH, (mBufferSize*w*h).toInt())
629
            GLES.glUniform1i(mMainOITTextureH, 0)
630
            GLES.glUniform2ui(mMainOITSizeH, w, h)
631
            GLES.glUniform1ui(mMainOITNumRecordsH, (mBufferSize*w*h).toInt())
632 632
            mesh.bindVertexAttribs(mMainOITProgram!!)
633 633
            mesh.send(mMainOITProgramH, 1)
634 634

  
......
638 638
            val projection = surface.mProjectionMatrix
639 639

  
640 640
            send(queues, mMainOITProgramH, distance, mipmap, projection, inflate, 1)
641
            GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, mesh.getNumVertices())
641
            GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, mesh.getNumVertices())
642 642
            if (mesh.showNormals) displayNormals(projection, mesh)
643 643
            mMainOITProgram!!.stopUsingProgram()
644 644
        }
......
653 653
            val w = surface.getWidth()
654 654
            val h = surface.getHeight()
655 655
            compute(queues, currTime, step)
656
            GLES31.glViewport(0, 0, w, h)
656
            GLES.glViewport(0, 0, w, h)
657 657

  
658 658
            mMainProgram!!.useProgram()
659
            GLES31.glUniform1i(mMainTextureH, 0)
659
            GLES.glUniform1i(mMainTextureH, 0)
660 660
            mesh.bindVertexAttribs(mMainProgram!!)
661 661
            mesh.send(mMainProgramH, 0)
662 662

  
......
666 666
            val projection = surface.mProjectionMatrix
667 667

  
668 668
            send(queues, mMainProgramH, distance, mipmap, projection, inflate, 0)
669
            GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, mesh.getNumVertices())
669
            GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, mesh.getNumVertices())
670 670
            if (mesh.showNormals) displayNormals(projection, mesh)
671 671
            mMainProgram!!.stopUsingProgram()
672 672
        }
......
681 681
            val h = surface.getHeight()
682 682
            val n = surface.getNear()
683 683
            mBlitProgram!!.useProgram()
684
            GLES31.glViewport(0, 0, w, h)
685
            GLES31.glUniform1i(mBlitTextureH, 0)
686
            GLES31.glUniform1f(mBlitDepthH, 1.0f-n)
687
            GLES31.glVertexAttribPointer(mBlitProgram!!.mAttribute!![0], 2, GLES31.GL_FLOAT, false, 0, mQuadPositions)
688
            GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4)
684
            GLES.glViewport(0, 0, w, h)
685
            GLES.glUniform1i(mBlitTextureH, 0)
686
            GLES.glUniform1f(mBlitDepthH, 1.0f-n)
687
            GLES.glVertexAttribPointer(mBlitProgram!!.mAttribute!![0], 2, GLES.GL_FLOAT, false, 0, mQuadPositions)
688
            GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, 4)
689 689
            mBlitProgram!!.stopUsingProgram()
690 690
        }
691 691
    }
......
698 698
            mBlitDepthProgram!!.useProgram()
699 699
            val w = surface.getWidth()
700 700
            val h = surface.getHeight()
701
            GLES31.glViewport(0, 0, w, h)
702
            GLES31.glUniform1i(mBlitDepthTextureH, 0)
703
            GLES31.glUniform1i(mBlitDepthDepthTextureH, 1)
704
            GLES31.glUniform2f(mBlitDepthTexCorrH, corrW, corrH)
705
            GLES31.glVertexAttribPointer(mBlitDepthProgram!!.mAttribute!![0], 2, GLES31.GL_FLOAT, false, 0, mQuadPositions)
706
            GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4)
701
            GLES.glViewport(0, 0, w, h)
702
            GLES.glUniform1i(mBlitDepthTextureH, 0)
703
            GLES.glUniform1i(mBlitDepthDepthTextureH, 1)
704
            GLES.glUniform2f(mBlitDepthTexCorrH, corrW, corrH)
705
            GLES.glVertexAttribPointer(mBlitDepthProgram!!.mAttribute!![0], 2, GLES.GL_FLOAT, false, 0, mQuadPositions)
706
            GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, 4)
707 707
            mBlitDepthProgram!!.stopUsingProgram()
708 708
        }
709 709
    }
......
712 712
    // yes it is safe to be mixing 3.0 and 3.1 like that, senior members of the OpenGL discussions forum assert
713 713
    private fun printPreviousBuffer(): Int
714 714
    {
715
        val atomicBuf = GLES31.glMapBufferRange(GLES31.GL_ATOMIC_COUNTER_BUFFER, 0, 4, GLES31.GL_MAP_READ_BIT) as ByteBuffer
715
        val atomicBuf = GLES.glMapBufferRange(GLES.GL_ATOMIC_COUNTER_BUFFER, 0, 4, GLES.GL_MAP_READ_BIT)
716 716
        val atomicIntBuf = atomicBuf.order(ByteOrder.nativeOrder()).asIntBuffer()
717 717
        val counter = atomicIntBuf[0]
718 718

  
719
        GLES31.glUnmapBuffer(GLES31.GL_ATOMIC_COUNTER_BUFFER)
719
        GLES.glUnmapBuffer(GLES.GL_ATOMIC_COUNTER_BUFFER)
720 720

  
721 721
        return counter
722 722
    }
......
724 724
    ///////////////////////////////////////////////////////////////////////////////////////////////////
725 725
    private fun zeroBuffer()
726 726
    {
727
        val atomicBuf = GLES31.glMapBufferRange(GLES31.GL_ATOMIC_COUNTER_BUFFER, 0, 4, GLES31.GL_MAP_WRITE_BIT or GLES31.GL_MAP_INVALIDATE_BUFFER_BIT) as ByteBuffer
727
        val atomicBuf = GLES.glMapBufferRange(GLES.GL_ATOMIC_COUNTER_BUFFER, 0, 4, GLES.GL_MAP_WRITE_BIT or GLES.GL_MAP_INVALIDATE_BUFFER_BIT)
728 728
        val atomicIntBuf = atomicBuf.order(ByteOrder.nativeOrder()).asIntBuffer()
729 729
        atomicIntBuf.put(0, 0)
730 730

  
731
        GLES31.glUnmapBuffer(GLES31.GL_ATOMIC_COUNTER_BUFFER)
731
        GLES.glUnmapBuffer(GLES.GL_ATOMIC_COUNTER_BUFFER)
732 732
    }
733 733

  
734 734
    ///////////////////////////////////////////////////////////////////////////////////////////////////
......
741 741
        {
742 742
            mAtomicCounter = IntArray(queueSize)
743 743

  
744
            GLES31.glGenBuffers(queueSize, mAtomicCounter, 0)
744
            GLES.glGenBuffers(queueSize, mAtomicCounter!!, 0)
745 745

  
746 746
            for (i in 0 until queueSize)
747 747
            {
748
                GLES31.glBindBuffer(GLES31.GL_ATOMIC_COUNTER_BUFFER, mAtomicCounter!![i])
749
                GLES31.glBufferData(GLES31.GL_ATOMIC_COUNTER_BUFFER, 4, null, GLES31.GL_DYNAMIC_DRAW)
748
                GLES.glBindBuffer(GLES.GL_ATOMIC_COUNTER_BUFFER, mAtomicCounter!![i])
749
                GLES.glBufferData(GLES.GL_ATOMIC_COUNTER_BUFFER, 4, null, GLES.GL_DYNAMIC_DRAW)
750 750
                zeroBuffer()
751 751
            }
752 752
        }
......
755 755
        // about 3%; doing it only once every 5 frames affects speed by less than 1%.
756 756
        if (mCurrBuffer==0)
757 757
        {
758
            GLES31.glBindBufferBase(GLES31.GL_ATOMIC_COUNTER_BUFFER, 0, mAtomicCounter!![mCurrBuffer])
758
            GLES.glBindBufferBase(GLES.GL_ATOMIC_COUNTER_BUFFER, 0, mAtomicCounter!![mCurrBuffer])
759 759
            counter = printPreviousBuffer()
760 760
        }
761 761

  
762 762
        if (++mCurrBuffer>=queueSize) mCurrBuffer = 0
763 763

  
764
        GLES31.glBindBufferBase(GLES31.GL_ATOMIC_COUNTER_BUFFER, 0, mAtomicCounter!![mCurrBuffer])
764
        GLES.glBindBufferBase(GLES.GL_ATOMIC_COUNTER_BUFFER, 0, mAtomicCounter!![mCurrBuffer])
765 765
        zeroBuffer()
766 766

  
767 767
        return counter
......
798 798

  
799 799
        if (mLinkedListSSBO[0]<0)
800 800
        {
801
            GLES31.glGenBuffers(1, mLinkedListSSBO, 0)
801
            GLES.glGenBuffers(1, mLinkedListSSBO, 0)
802 802

  
803 803
            val size = (w*h*(3*mBufferSize+1)*4).toInt()
804
            GLES31.glBindBuffer(GLES31.GL_SHADER_STORAGE_BUFFER, mLinkedListSSBO[0])
805
            GLES31.glBufferData(GLES31.GL_SHADER_STORAGE_BUFFER, size, null, GLES31.GL_DYNAMIC_READ or GLES31.GL_DYNAMIC_DRAW)
806
            GLES31.glBindBuffer(GLES31.GL_SHADER_STORAGE_BUFFER, 0)
804
            GLES.glBindBuffer(GLES.GL_SHADER_STORAGE_BUFFER, mLinkedListSSBO[0])
805
            GLES.glBufferData(GLES.GL_SHADER_STORAGE_BUFFER, size, null, GLES.GL_DYNAMIC_READ or GLES.GL_DYNAMIC_DRAW)
806
            GLES.glBindBuffer(GLES.GL_SHADER_STORAGE_BUFFER, 0)
807 807

  
808
            GLES31.glBindBufferBase(GLES31.GL_SHADER_STORAGE_BUFFER, 1, mLinkedListSSBO[0])
808
            GLES.glBindBufferBase(GLES.GL_SHADER_STORAGE_BUFFER, 1, mLinkedListSSBO[0])
809 809
        }
810 810

  
811 811
        // See if we have overflown the SSBO in one of the previous frames.
......
816 816
        {
817 817
            mBufferSize *= (overflow+1.0f).toInt().toFloat()
818 818
            val size = (w*h*(3*mBufferSize+1)*4).toInt()
819
            GLES31.glBindBuffer(GLES31.GL_SHADER_STORAGE_BUFFER, mLinkedListSSBO[0])
820
            GLES31.glBufferData(GLES31.GL_SHADER_STORAGE_BUFFER, size, null, GLES31.GL_DYNAMIC_READ or GLES31.GL_DYNAMIC_DRAW)
821
            GLES31.glBindBuffer(GLES31.GL_SHADER_STORAGE_BUFFER, 0)
819
            GLES.glBindBuffer(GLES.GL_SHADER_STORAGE_BUFFER, mLinkedListSSBO[0])
820
            GLES.glBufferData(GLES.GL_SHADER_STORAGE_BUFFER, size, null, GLES.GL_DYNAMIC_READ or GLES.GL_DYNAMIC_DRAW)
821
            GLES.glBindBuffer(GLES.GL_SHADER_STORAGE_BUFFER, 0)
822 822
        }
823 823

  
824 824
        mOITClearProgram!!.useProgram()
825
        GLES31.glViewport(0, 0, w, h)
826
        GLES31.glUniform2f(mOITClearTexCorrH, 1.0f, 1.0f) // corrections do not really matter here - only present because of common vertex shader.
827
        GLES31.glUniform1f(mOITClearDepthH, 1.0f) // likewise depth
828
        GLES31.glUniform2ui(mOITClearSizeH, w, h)
829
        GLES31.glVertexAttribPointer(mOITClearProgram!!.mAttribute!![0], 2, GLES31.GL_FLOAT, false, 0, mQuadPositions)
830
        GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4)
825
        GLES.glViewport(0, 0, w, h)
826
        GLES.glUniform2f(mOITClearTexCorrH, 1.0f, 1.0f) // corrections do not really matter here - only present because of common vertex shader.
827
        GLES.glUniform1f(mOITClearDepthH, 1.0f) // likewise depth
828
        GLES.glUniform2ui(mOITClearSizeH, w, h)
829
        GLES.glVertexAttribPointer(mOITClearProgram!!.mAttribute!![0], 2, GLES.GL_FLOAT, false, 0, mQuadPositions)
830
        GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, 4)
831 831
        mOITClearProgram!!.stopUsingProgram()
832 832
    }
833 833

  
......
841 841
            val h = surface.getHeight()
842 842
            val n = surface.getNear()
843 843
            mOITBuildProgram!!.useProgram()
844
            GLES31.glViewport(0, 0, w, h)
845
            GLES31.glUniform1i(mOITBuildTextureH, 0)
846
            GLES31.glUniform1i(mOITBuildDepthTextureH, 1)
847
            GLES31.glUniform2f(mOITBuildTexCorrH, corrW, corrH)
848
            GLES31.glUniform2ui(mOITBuildSizeH, w, h)
849
            GLES31.glUniform1ui(mOITBuildNumRecordsH, (mBufferSize*w*h).toInt())
850
            GLES31.glUniform1f(mOITBuildDepthH, 1.0f-n)
851
            GLES31.glVertexAttribPointer(mOITBuildProgram!!.mAttribute!![0], 2, GLES31.GL_FLOAT, false, 0, mQuadPositions)
852
            GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4)
844
            GLES.glViewport(0, 0, w, h)
845
            GLES.glUniform1i(mOITBuildTextureH, 0)
846
            GLES.glUniform1i(mOITBuildDepthTextureH, 1)
847
            GLES.glUniform2f(mOITBuildTexCorrH, corrW, corrH)
848
            GLES.glUniform2ui(mOITBuildSizeH, w, h)
849
            GLES.glUniform1ui(mOITBuildNumRecordsH, (mBufferSize*w*h).toInt())
850
            GLES.glUniform1f(mOITBuildDepthH, 1.0f-n)
851
            GLES.glVertexAttribPointer(mOITBuildProgram!!.mAttribute!![0], 2, GLES.GL_FLOAT, false, 0, mQuadPositions)
852
            GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, 4)
853 853
            mOITBuildProgram!!.stopUsingProgram()
854 854
        }
855 855
    }
......
864 864
            val h = surface.getHeight()
865 865
            val n = surface.getNear()
866 866
            mOITCollapseProgram!!.useProgram()
867
            GLES31.glViewport(0, 0, w, h)
868
            GLES31.glUniform1i(mOITCollapseDepthTextureH, 1)
869
            GLES31.glUniform2f(mOITCollapseTexCorrH, corrW, corrH)
870
            GLES31.glUniform2ui(mOITCollapseSizeH, w, h)
871
            GLES31.glUniform1f(mOITCollapseDepthH, 1.0f-n)
872
            GLES31.glVertexAttribPointer(mOITCollapseProgram!!.mAttribute!![0], 2, GLES31.GL_FLOAT, false, 0, mQuadPositions)
873
            GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4)
867
            GLES.glViewport(0, 0, w, h)
868
            GLES.glUniform1i(mOITCollapseDepthTextureH, 1)
869
            GLES.glUniform2f(mOITCollapseTexCorrH, corrW, corrH)
870
            GLES.glUniform2ui(mOITCollapseSizeH, w, h)
871
            GLES.glUniform1f(mOITCollapseDepthH, 1.0f-n)
872
            GLES.glVertexAttribPointer(mOITCollapseProgram!!.mAttribute!![0], 2, GLES.GL_FLOAT, false, 0, mQuadPositions)
873
            GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, 4)
874 874
            mOITCollapseProgram!!.stopUsingProgram()
875 875
        }
876 876
    }
......
885 885
            val h = surface.getHeight()
886 886
            val n = surface.getNear()
887 887
            mOITRenderProgram!!.useProgram()
888
            GLES31.glViewport(0, 0, w, h)
889
            GLES31.glUniform2f(mOITRenderTexCorrH, corrW, corrH)
890
            GLES31.glUniform2ui(mOITRenderSizeH, w, h)
891
            GLES31.glUniform1f(mOITRenderDepthH, 1.0f-n)
892
            GLES31.glVertexAttribPointer(mOITRenderProgram!!.mAttribute!![0], 2, GLES31.GL_FLOAT, false, 0, mQuadPositions)
893
            GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4)
888
            GLES.glViewport(0, 0, w, h)
889
            GLES.glUniform2f(mOITRenderTexCorrH, corrW, corrH)
890
            GLES.glUniform2ui(mOITRenderSizeH, w, h)
891
            GLES.glUniform1f(mOITRenderDepthH, 1.0f-n)
892
            GLES.glVertexAttribPointer(mOITRenderProgram!!.mAttribute!![0], 2, GLES.GL_FLOAT, false, 0, mQuadPositions)
893
            GLES.glDrawArrays(GLES.GL_TRIANGLE_STRIP, 0, 4)
894 894
            mOITRenderProgram!!.stopUsingProgram()
895 895
        }
896 896
    }
......
925 925
    // PowerVR GE8100 / GE8300 compiler fails to compile OIT programs.
926 926
    private fun detectBuggyDriversAndSetQueueSize(queueSize: Int)
927 927
    {
928
        driverVendor   = GLES31.glGetString(GLES31.GL_VENDOR)
929
        driverVersion  = GLES31.glGetString(GLES31.GL_VERSION)
930
        driverRenderer = GLES31.glGetString(GLES31.GL_RENDERER)
928
        driverVendor   = GLES.glGetString(GLES.GL_VENDOR)
929
        driverVersion  = GLES.glGetString(GLES.GL_VERSION)
930
        driverRenderer = GLES.glGetString(GLES.GL_RENDERER)
931 931

  
932 932
        DistortedLibrary.queueSize = 1
933 933
        mFastCompilationTF = true
......
955 955
            if ( driverRenderer!!.contains("GE8") )
956 956
            {
957 957
                mUser.logMessage("You are running this on a PowerVR GE8XXX.\nDue to a buggy compiler OIT rendering will not work")
958
                mUser.logMessage("GLSL Version "+GLES31.glGetString(GLES31.GL_SHADING_LANGUAGE_VERSION))
958
                mUser.logMessage("GLSL Version "+GLES.glGetString(GLES.GL_SHADING_LANGUAGE_VERSION))
959 959
            }
960 960
        }
961 961
        else if (driverVendor!=null && driverVendor!!.contains("Qualcomm"))
......
981 981
        {
982 982
            val major = IntArray(1)
983 983
            val minor = IntArray(1)
984
            GLES31.glGetIntegerv(GLES31.GL_MAJOR_VERSION, major, 0)
985
            GLES31.glGetIntegerv(GLES31.GL_MINOR_VERSION, minor, 0)
984
            GLES.glGetIntegerv(GLES.GL_MAJOR_VERSION, major, 0)
985
            GLES.glGetIntegerv(GLES.GL_MINOR_VERSION, minor, 0)
986 986
            return major[0]*100+minor[0]*10
987 987
        }
988 988

  
......
1021 1021
        }
1022 1022

  
1023 1023
        val tmp = IntArray(1)
1024
        GLES31.glGetIntegerv(GLES31.GL_MAX_TEXTURE_SIZE, tmp, 0)
1024
        GLES.glGetIntegerv(GLES.GL_MAX_TEXTURE_SIZE, tmp, 0)
1025 1025
        maxTextureSize = tmp[0]
1026
        GLES31.glGetIntegerv(GLES31.GL_MAX_VERTEX_UNIFORM_VECTORS, tmp, 0)
1026
        GLES.glGetIntegerv(GLES.GL_MAX_VERTEX_UNIFORM_VECTORS, tmp, 0)
1027 1027
        maxVertexUniforms = tmp[0]
1028
        GLES31.glGetIntegerv(GLES31.GL_MAX_FRAGMENT_UNIFORM_VECTORS, tmp, 0)
1028
        GLES.glGetIntegerv(GLES.GL_MAX_FRAGMENT_UNIFORM_VECTORS, tmp, 0)
1029 1029
        maxFragmentUniforms = tmp[0]
1030 1030

  
1031 1031
        mUser.logMessage("Using OpenGL ES $major.$minor texSize=$maxTextureSize maxVerUniforms: $maxVertexUniforms maxFraUniforms: $maxFragmentUniforms")
......
1077 1077
    {
1078 1078
        if (on)
1079 1079
        {
1080
            GLES31.glEnable(GLES31.GL_CULL_FACE)
1081
            GLES31.glCullFace(GLES31.GL_FRONT)
1080
            GLES.glEnable(GLES.GL_CULL_FACE)
1081
            GLES.glCullFace(GLES.GL_FRONT)
1082 1082
        }
1083 1083
        else
1084 1084
        {
1085
            GLES31.glDisable(GLES31.GL_CULL_FACE)
1085
            GLES.glDisable(GLES.GL_CULL_FACE)
1086 1086
        }
1087 1087
    }
1088 1088

  
src/main/java/org/distorted/library/main/DistortedNode.kt
19 19
///////////////////////////////////////////////////////////////////////////////////////////////////
20 20
package org.distorted.library.main
21 21

  
22
import android.opengl.GLES31
22
import org.distorted.library.platform.GLES
23 23
import org.distorted.library.main.InternalNodeData.Companion.returnData
24 24
import org.distorted.library.mesh.MeshBase
25 25

  
......
165 165
        if( setAsInput() )
166 166
        {
167 167
            mState.apply()
168
            GLES31.glDisable(GLES31.GL_BLEND)
168
            GLES.glDisable(GLES.GL_BLEND)
169 169
            if (mLastTime==0L) mLastTime = currTime
170 170
            DistortedLibrary.drawPriv(mEffects, mMesh, surface, currTime, (currTime-mLastTime))
171 171
            mLastTime = currTime
172
            GLES31.glEnable(GLES31.GL_BLEND)
172
            GLES.glEnable(GLES.GL_BLEND)
173 173
            return 1
174 174
        }
175 175

  
src/main/java/org/distorted/library/main/DistortedScreen.kt
22 22
import android.graphics.Bitmap
23 23
import android.graphics.Canvas
24 24
import android.graphics.Paint
25
import android.opengl.GLES31
25
import org.distorted.library.platform.GLES
26 26
import org.distorted.library.effect.MatrixEffectMove
27 27
import org.distorted.library.effect.MatrixEffectScale
28 28
import org.distorted.library.mesh.MeshQuad
......
171 171

  
172 172
        val numrender = super.render(time, mCurRenderedFBO)
173 173

  
174
        GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, 0)
174
        GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, 0)
175 175

  
176 176
        // workaround for the Mali issues: blit the framebuffer we have computed DistortedLibrary.FBO_QUEUE_SIZE
177 177
        // frames ago. Looks like FBO_QUEUE_SIZE=2 solves the issue already but I decided to play it safe and
......
180 180
        // on speed. Maybe a slight positive effect if any!
181 181
        setAsInput(mToBeBlittedFBO, 0)
182 182

  
183
        GLES31.glColorMask(true, true, true, true)
184
        GLES31.glDepthMask(false)
185
        GLES31.glDisable(GLES31.GL_STENCIL_TEST)
186
        GLES31.glDisable(GLES31.GL_DEPTH_TEST)
187
        GLES31.glDisable(GLES31.GL_BLEND)
183
        GLES.glColorMask(true, true, true, true)
184
        GLES.glDepthMask(false)
185
        GLES.glDisable(GLES.GL_STENCIL_TEST)
186
        GLES.glDisable(GLES.GL_DEPTH_TEST)
187
        GLES.glDisable(GLES.GL_BLEND)
188 188

  
189 189
        DistortedLibrary.blitPriv(this)
190 190

  
......
208 208
            mToBeBlittedFBO = 0
209 209
        }
210 210
/*
211
    int err = GLES31.glGetError();
211
    int err = GLES.glGetError();
212 212

  
213
    if( err!=GLES31.GL_NO_ERROR )
213
    if( err!=GLES.GL_NO_ERROR )
214 214
      {
215 215
      DistortedLibrary.logMessage("DistortedScreen: OpenGL error "+err);
216 216
      }
src/main/java/org/distorted/library/main/DistortedTexture.kt
23 23
import android.graphics.Canvas
24 24
import android.graphics.Matrix
25 25
import android.graphics.Paint
26
import android.opengl.GLES31
26
import org.distorted.library.platform.GLES
27 27
import android.opengl.GLUtils
28 28

  
29 29
///////////////////////////////////////////////////////////////////////////////////////////////////
......
67 67
            if (mColorCreated==NOT_CREATED_YET)
68 68
            {
69 69
                mColorCreated = CREATED
70
                GLES31.glGenTextures(1, mColorH, 0)
70
                GLES.glGenTextures(1, mColorH, 0)
71 71
            }
72 72

  
73
            GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, mColorH!![0])
74
            GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_MIN_FILTER, GLES31.GL_LINEAR)
75
            GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_MAG_FILTER, GLES31.GL_LINEAR)
76
            GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_S, GLES31.GL_CLAMP_TO_EDGE)
77
            GLES31.glTexParameteri(GLES31.GL_TEXTURE_2D, GLES31.GL_TEXTURE_WRAP_T, GLES31.GL_CLAMP_TO_EDGE)
78
            GLUtils.texImage2D(GLES31.GL_TEXTURE_2D, 0, if (mBitmapInverted) mBmp else flipBitmap(mBmp!!), 0)
79
            GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, 0)
73
            GLES.glBindTexture(GLES.GL_TEXTURE_2D, mColorH!![0])
74
            GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_MIN_FILTER, GLES.GL_LINEAR)
75
            GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_MAG_FILTER, GLES.GL_LINEAR)
76
            GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_S, GLES.GL_CLAMP_TO_EDGE)
77
            GLES.glTexParameteri(GLES.GL_TEXTURE_2D, GLES.GL_TEXTURE_WRAP_T, GLES.GL_CLAMP_TO_EDGE)
78
            GLUtils.texImage2D(GLES.GL_TEXTURE_2D, 0, if (mBitmapInverted) mBmp else flipBitmap(mBmp!!), 0)
79
            GLES.glBindTexture(GLES.GL_TEXTURE_2D, 0)
80 80

  
81 81
            mBmp = null
82 82
        }
......
88 88
    {
89 89
        if (mColorH!![0]>0)
90 90
        {
91
            GLES31.glDeleteTextures(1, mColorH, 0)
91
            GLES.glDeleteTextures(1, mColorH, 0)
92 92
            mColorH!![0] = 0
93 93
            mColorCreated = NOT_CREATED_YET
94 94
        }
src/main/java/org/distorted/library/main/InternalBuffer.kt
19 19
///////////////////////////////////////////////////////////////////////////////////////////////////
20 20
package org.distorted.library.main
21 21

  
22
import android.opengl.GLES31
22
import org.distorted.library.platform.GLES
23 23

  
24 24
import java.nio.Buffer
25 25
import java.nio.ByteBuffer
......
55 55
    constructor() : super(TYPE_USER, STORAGE_PRIVATE)
56 56
    {
57 57
        mIndex  = IntArray(1)
58
        mTarget = GLES31.GL_UNIFORM_BUFFER
59
        mUsage  = GLES31.GL_STATIC_DRAW
58
        mTarget = GLES.GL_UNIFORM_BUFFER
59
        mUsage  = GLES.GL_STATIC_DRAW
60 60
        mBuffer = null
61 61
        mSize   = 0
62 62
        mStatus = RECREATE
......
92 92
                mBuffer = null
93 93
            }
94 94

  
95
            GLES31.glGenBuffers(1, mIndex, 0)
96
            GLES31.glBindBuffer(mTarget, mIndex[0])
97
            GLES31.glBufferData(mTarget, mSize, mBuffer, mUsage)
98
            GLES31.glBindBuffer(mTarget, 0)
95
            GLES.glGenBuffers(1, mIndex, 0)
96
            GLES.glBindBuffer(mTarget, mIndex[0])
97
            GLES.glBufferData(mTarget, mSize, mBuffer, mUsage)
98
            GLES.glBindBuffer(mTarget, 0)
99 99

  
100 100
            markWasCreatedImmediately()
101 101
        }
......
128 128
                mBuffer = null
129 129
            }
130 130

  
131
            GLES31.glGenBuffers(1, mIndex, 0)
132
            GLES31.glBindBuffer(mTarget, mIndex[0])
133
            GLES31.glBufferData(mTarget, mSize, mBuffer, mUsage)
134
            GLES31.glBindBuffer(mTarget, 0)
131
            GLES.glGenBuffers(1, mIndex, 0)
132
            GLES.glBindBuffer(mTarget, mIndex[0])
133
            GLES.glBufferData(mTarget, mSize, mBuffer, mUsage)
134
            GLES.glBindBuffer(mTarget, 0)
135 135

  
136 136
            markWasCreatedImmediately()
137 137
        }
......
151 151
    {
152 152
        (mBuffer as FloatBuffer).put(buffer).position(0)
153 153

  
154
        GLES31.glBindBuffer(mTarget, mIndex[0])
155
        GLES31.glBufferData(mTarget, mSize, mBuffer, mUsage)
156
        GLES31.glBindBuffer(mTarget, 0)
154
        GLES.glBindBuffer(mTarget, mIndex[0])
155
        GLES.glBufferData(mTarget, mSize, mBuffer, mUsage)
156
        GLES.glBindBuffer(mTarget, 0)
157 157

  
158 158
        mStatus = mStatus and (UPDATE.inv())
159 159
    }
......
164 164
    {
165 165
        (mBuffer as IntBuffer).put(buffer).position(0)
166 166

  
167
        GLES31.glBindBuffer(mTarget, mIndex[0])
168
        GLES31.glBufferData(mTarget, mSize, mBuffer, mUsage)
169
        GLES31.glBindBuffer(mTarget, 0)
167
        GLES.glBindBuffer(mTarget, mIndex[0])
168
        GLES.glBufferData(mTarget, mSize, mBuffer, mUsage)
169
        GLES.glBindBuffer(mTarget, 0)
170 170

  
171 171
        mStatus = mStatus and (UPDATE.inv())
172 172
    }
......
190 190
    // must be called from a thread holding OpenGL Context
191 191
    override fun delete()
192 192
    {
193
        GLES31.glDeleteBuffers(1, mIndex, 0)
193
        GLES.glDeleteBuffers(1, mIndex, 0)
194 194
        mStatus = mStatus or RECREATE
195 195
        removeFromDone()
196 196
    }
src/main/java/org/distorted/library/main/InternalOutputSurface.kt
19 19
///////////////////////////////////////////////////////////////////////////////////////////////////
20 20
package org.distorted.library.main
21 21

  
22
import android.opengl.GLES31
22
import org.distorted.library.platform.GLES
23 23
import org.distorted.library.effect.EffectQuality
24 24
import org.distorted.library.effect.EffectQuality.Companion.getMipmap
25 25
import org.distorted.library.effectqueue.EffectQueuePostprocess
......
101 101
            InternalStackFrameList.toDo() // create the FBOs immediately. This is safe as we must be holding the OpenGL context now.
102 102

  
103 103
            InternalRenderState.colorDepthStencilOn()
104
            GLES31.glClearColor(CLEAR_R, CLEAR_G, CLEAR_B, CLEAR_A)
105
            GLES31.glClearDepthf(CLEAR_D)
106
            GLES31.glClearStencil(CLEAR_S)
104
            GLES.glClearColor(CLEAR_R, CLEAR_G, CLEAR_B, CLEAR_A)
105
            GLES.glClearDepthf(CLEAR_D)
106
            GLES.glClearStencil(CLEAR_S)
107 107

  
108 108
            val colorH = mBuffer[quality]!!.mColorH!!
109 109

  
110 110
            for (k in 0 until queueSize)
111 111
            {
112
                GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, mBuffer[quality]!!.mFBOH[k])
113
                GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_COLOR_ATTACHMENT0, GLES31.GL_TEXTURE_2D, colorH[2*k+1], 0)
114
                GLES31.glClear(GLES31.GL_COLOR_BUFFER_BIT or GLES31.GL_DEPTH_BUFFER_BIT or GLES31.GL_STENCIL_BUFFER_BIT)
115
                GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_COLOR_ATTACHMENT0, GLES31.GL_TEXTURE_2D, colorH[2*k], 0)
116
                GLES31.glClear(GLES31.GL_COLOR_BUFFER_BIT)
112
                GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, mBuffer[quality]!!.mFBOH[k])
113
                GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_COLOR_ATTACHMENT0, GLES.GL_TEXTURE_2D, colorH[2*k+1], 0)
114
                GLES.glClear(GLES.GL_COLOR_BUFFER_BIT or GLES.GL_DEPTH_BUFFER_BIT or GLES.GL_STENCIL_BUFFER_BIT)
115
                GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_COLOR_ATTACHMENT0, GLES.GL_TEXTURE_2D, colorH[2*k], 0)
116
                GLES.glClear(GLES.GL_COLOR_BUFFER_BIT)
117 117
            }
118 118

  
119 119
            InternalRenderState.colorDepthStencilRestore()
120 120

  
121
            GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, 0)
121
            GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, 0)
122 122
        }
123 123

  
124 124
        ///////////////////////////////////////////////////////////////////////////////////////////////////
......
137 137
        {
138 138
            val counter = DistortedLibrary.zeroOutAtomic()
139 139
            DistortedLibrary.oitClear(buffer, counter)
140
            GLES31.glMemoryBarrier(GLES31.GL_SHADER_STORAGE_BARRIER_BIT or GLES31.GL_ATOMIC_COUNTER_BARRIER_BIT)
140
            GLES.glMemoryBarrier(GLES.GL_SHADER_STORAGE_BARRIER_BIT or GLES.GL_ATOMIC_COUNTER_BARRIER_BIT)
141 141
        }
142 142
    }
143 143
    ///////////////////////////////////////////////////////////////////////////////////////////////////
......
153 153

  
154 154
        mDepthStencilCreated = (if (mDepthStencil==NO_DEPTH_NO_STENCIL) DONT_CREATE else NOT_CREATED_YET)
155 155

  
156
        mClear = GLES31.GL_DEPTH_BUFFER_BIT or GLES31.GL_COLOR_BUFFER_BIT
156
        mClear = GLES.GL_DEPTH_BUFFER_BIT or GLES.GL_COLOR_BUFFER_BIT
157 157

  
158 158
        mChildren = InternalChildrenList(this)
159 159

  
......
234 234
    {
235 235
        val colorH = buffer.mColorH!!
236 236

  
237
        GLES31.glViewport(0, 0, mWidth, mHeight)
237
        GLES.glViewport(0, 0, mWidth, mHeight)
238 238
        setAsOutput(currTime)
239
        GLES31.glActiveTexture(GLES31.GL_TEXTURE0)
240
        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, colorH[2*fbo])
241
        GLES31.glActiveTexture(GLES31.GL_TEXTURE1)
242
        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, buffer.mDepthStencilH!![fbo])
239
        GLES.glActiveTexture(GLES.GL_TEXTURE0)
240
        GLES.glBindTexture(GLES.GL_TEXTURE_2D, colorH[2*fbo])
241
        GLES.glActiveTexture(GLES.GL_TEXTURE1)
242
        GLES.glBindTexture(GLES.GL_TEXTURE_2D, buffer.mDepthStencilH!![fbo])
243 243

  
244
        GLES31.glDisable(GLES31.GL_STENCIL_TEST)
245
        GLES31.glStencilMask(0x00)
244
        GLES.glDisable(GLES.GL_STENCIL_TEST)
245
        GLES.glStencilMask(0x00)
246 246

  
247 247
        DistortedLibrary.blitDepthPriv(this, buffer.widthCorrection, buffer.heightCorrection)
248
        GLES31.glActiveTexture(GLES31.GL_TEXTURE0)
249
        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, 0)
250
        GLES31.glActiveTexture(GLES31.GL_TEXTURE1)
251
        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, 0)
248
        GLES.glActiveTexture(GLES.GL_TEXTURE0)
249
        GLES.glBindTexture(GLES.GL_TEXTURE_2D, 0)
250
        GLES.glActiveTexture(GLES.GL_TEXTURE1)
251
        GLES.glBindTexture(GLES.GL_TEXTURE_2D, 0)
252 252

  
253 253
        // clear buffers
254
        GLES31.glStencilMask(0xff)
255
        GLES31.glDepthMask(true)
256
        GLES31.glColorMask(true, true, true, true)
257
        GLES31.glClearColor(buffer.mClearR, buffer.mClearG, buffer.mClearB, buffer.mClearA)
258
        GLES31.glClearDepthf(buffer.mClearDepth)
259
        GLES31.glClearStencil(buffer.mClearStencil)
254
        GLES.glStencilMask(0xff)
255
        GLES.glDepthMask(true)
256
        GLES.glColorMask(true, true, true, true)
257
        GLES.glClearColor(buffer.mClearR, buffer.mClearG, buffer.mClearB, buffer.mClearA)
258
        GLES.glClearDepthf(buffer.mClearDepth)
259
        GLES.glClearStencil(buffer.mClearStencil)
260 260

  
261 261
        buffer.setAsOutput()
262
        GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_COLOR_ATTACHMENT0, GLES31.GL_TEXTURE_2D, colorH[2*fbo+1], 0)
263
        GLES31.glClear(GLES31.GL_COLOR_BUFFER_BIT or GLES31.GL_DEPTH_BUFFER_BIT or GLES31.GL_STENCIL_BUFFER_BIT)
264
        GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_COLOR_ATTACHMENT0, GLES31.GL_TEXTURE_2D, colorH[2*fbo], 0)
265
        GLES31.glClear(GLES31.GL_COLOR_BUFFER_BIT)
262
        GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_COLOR_ATTACHMENT0, GLES.GL_TEXTURE_2D, colorH[2*fbo+1], 0)
263
        GLES.glClear(GLES.GL_COLOR_BUFFER_BIT or GLES.GL_DEPTH_BUFFER_BIT or GLES.GL_STENCIL_BUFFER_BIT)
264
        GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_COLOR_ATTACHMENT0, GLES.GL_TEXTURE_2D, colorH[2*fbo], 0)
265
        GLES.glClear(GLES.GL_COLOR_BUFFER_BIT)
266 266

  
267 267
        return 1
268 268
    }
......
270 270
    ///////////////////////////////////////////////////////////////////////////////////////////////////
271 271
    private fun oitBuild(time: Long, buffer: InternalOutputSurface, fbo: Int): Int
272 272
    {
273
        GLES31.glViewport(0, 0, mWidth, mHeight)
273
        GLES.glViewport(0, 0, mWidth, mHeight)
274 274
        setAsOutput(time)
275
        GLES31.glActiveTexture(GLES31.GL_TEXTURE0)
276
        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, buffer.mColorH!![2*fbo])
277
        GLES31.glActiveTexture(GLES31.GL_TEXTURE1)
278
        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, buffer.mDepthStencilH!![fbo])
275
        GLES.glActiveTexture(GLES.GL_TEXTURE0)
276
        GLES.glBindTexture(GLES.GL_TEXTURE_2D, buffer.mColorH!![2*fbo])
277
        GLES.glActiveTexture(GLES.GL_TEXTURE1)
278
        GLES.glBindTexture(GLES.GL_TEXTURE_2D, buffer.mDepthStencilH!![fbo])
279 279

  
280 280
        InternalRenderState.colorDepthStencilOn()
281 281
        InternalRenderState.enableDepthTest()
282 282

  
283 283
        DistortedLibrary.oitBuild(this, buffer.widthCorrection, buffer.heightCorrection)
284
        GLES31.glActiveTexture(GLES31.GL_TEXTURE0)
285
        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, 0)
286
        GLES31.glActiveTexture(GLES31.GL_TEXTURE1)
287
        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, 0)
284
        GLES.glActiveTexture(GLES.GL_TEXTURE0)
285
        GLES.glBindTexture(GLES.GL_TEXTURE_2D, 0)
286
        GLES.glActiveTexture(GLES.GL_TEXTURE1)
287
        GLES.glBindTexture(GLES.GL_TEXTURE_2D, 0)
288 288

  
289 289
        InternalRenderState.colorDepthStencilRestore()
290 290
        InternalRenderState.restoreDepthTest()
......
304 304
        // Otherwise there's no point (in fact we then would create a feedback loop!)
305 305
        if( depthStencil[fbo]!=0 )
306 306
        {
307
            GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, 0)
308
            GLES31.glActiveTexture(GLES31.GL_TEXTURE1)
309
            GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, depthStencil[fbo])
307
            GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, 0)
308
            GLES.glActiveTexture(GLES.GL_TEXTURE1)
309
            GLES.glBindTexture(GLES.GL_TEXTURE_2D, depthStencil[fbo])
310 310
            InternalRenderState.switchOffColorDepthStencil()
311 311
            DistortedLibrary.oitCollapse(this, corrW, corrH)
312
            GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, 0)
312
            GLES.glBindTexture(GLES.GL_TEXTURE_2D, 0)
313 313
        }
314 314

  
315 315
        setAsOutput(currTime)
......
324 324
    private fun clear()
325 325
    {
326 326
        InternalRenderState.colorDepthStencilOn()
327
        GLES31.glClearColor(mClearR, mClearG, mClearB, mClearA)
328
        GLES31.glClearDepthf(mClearDepth)
329
        GLES31.glClearStencil(mClearStencil)
330
        GLES31.glClear(mClear)
327
        GLES.glClearColor(mClearR, mClearG, mClearB, mClearA)
328
        GLES.glClearDepthf(mClearDepth)
329
        GLES.glClearStencil(mClearStencil)
330
        GLES.glClear(mClear)
331 331
        InternalRenderState.colorDepthStencilRestore()
332 332
    }
333 333

  
......
361 361
        if( oit )
362 362
        {
363 363
            numRenders += oitBuild(time, buffer, fbo)
364
            GLES31.glMemoryBarrier(GLES31.GL_SHADER_STORAGE_BARRIER_BIT or GLES31.GL_ATOMIC_COUNTER_BARRIER_BIT)
364
            GLES.glMemoryBarrier(GLES.GL_SHADER_STORAGE_BARRIER_BIT or GLES.GL_ATOMIC_COUNTER_BARRIER_BIT)
365 365
            buffer.clearBuffer(fbo)
366 366
        }
367 367
        else
......
385 385
            if (oit)
386 386
            {
387 387
                numRenders = child.drawOIT(time, this)
388
                GLES31.glMemoryBarrier(GLES31.GL_SHADER_STORAGE_BARRIER_BIT or GLES31.GL_ATOMIC_COUNTER_BARRIER_BIT)
388
                GLES.glMemoryBarrier(GLES.GL_SHADER_STORAGE_BARRIER_BIT or GLES.GL_ATOMIC_COUNTER_BARRIER_BIT)
389 389
            }
390 390
            else
391 391
            {
......
518 518

  
519 519
        InternalRenderState.colorDepthStencilOn()
520 520

  
521
        GLES31.glClearColor(mClearR, mClearG, mClearB, mClearA)
522
        GLES31.glClearDepthf(mClearDepth)
523
        GLES31.glClearStencil(mClearStencil)
521
        GLES.glClearColor(mClearR, mClearG, mClearB, mClearA)
522
        GLES.glClearDepthf(mClearDepth)
523
        GLES.glClearStencil(mClearStencil)
524 524

  
525
        GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, mFBOH[fbo])
526
        GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_COLOR_ATTACHMENT0, GLES31.GL_TEXTURE_2D, colorH[2*fbo+1], 0)
527
        GLES31.glClear(GLES31.GL_COLOR_BUFFER_BIT or GLES31.GL_DEPTH_BUFFER_BIT or GLES31.GL_STENCIL_BUFFER_BIT)
528
        GLES31.glFramebufferTexture2D(GLES31.GL_FRAMEBUFFER, GLES31.GL_COLOR_ATTACHMENT0, GLES31.GL_TEXTURE_2D, colorH[2*fbo], 0)
529
        GLES31.glClear(GLES31.GL_COLOR_BUFFER_BIT)
525
        GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, mFBOH[fbo])
526
        GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_COLOR_ATTACHMENT0, GLES.GL_TEXTURE_2D, colorH[2*fbo+1], 0)
527
        GLES.glClear(GLES.GL_COLOR_BUFFER_BIT or GLES.GL_DEPTH_BUFFER_BIT or GLES.GL_STENCIL_BUFFER_BIT)
528
        GLES.glFramebufferTexture2D(GLES.GL_FRAMEBUFFER, GLES.GL_COLOR_ATTACHMENT0, GLES.GL_TEXTURE_2D, colorH[2*fbo], 0)
529
        GLES.glClear(GLES.GL_COLOR_BUFFER_BIT)
530 530

  
531 531
        InternalRenderState.colorDepthStencilRestore()
532 532
    }
......
534 534
    ///////////////////////////////////////////////////////////////////////////////////////////////////
535 535
    fun setAsOutput(time: Long)
536 536
    {
537
        GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, mFBOH[mCurrFBO])
537
        GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, mFBOH[mCurrFBO])
538 538

  
539 539
        if (mTime[mCurrFBO]!=time)
540 540
        {
......
615 615
     */
616 616
    fun setAsOutput()
617 617
    {
618
        GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, mFBOH[mCurrFBO])
618
        GLES.glBindFramebuffer(GLES.GL_FRAMEBUFFER, mFBOH[mCurrFBO])
619 619
    }
620 620

  
621 621
    ///////////////////////////////////////////////////////////////////////////////////////////////////
......
644 644

  
645 645
    ///////////////////////////////////////////////////////////////////////////////////////////////////
646 646
    /**
647
     * Set the (R,G,B,A) values of GLES31.glClearColor() to set up color with which to clear
647
     * Set the (R,G,B,A) values of GLES.glClearColor() to set up color with which to clear
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff