UserInterface::UserInterface(float inRange) : mRange(inRange), mRatio(0.0f), mMouseX(0.0f), mMouseY(0.0f), mMouseOverWidget(NULL), mClickCandidate(NULL), mModelViewProjection(mMatrix) { if (mRange < 1.0f) mRange = 1.0f; VertexShader vs; const char* vertexShader = "#version 120\n" "uniform mat4 uMVPM;\n" "attribute vec2 iPosition;\n" "attribute vec2 iTexture;\n" "varying vec2 vTexture;\n" "void main(void)\n" "{\n" " vTexture = iTexture;\n" " vec4 p = vec4(iPosition, 0.0, 1.0);\n" " gl_Position = uMVPM * p;\n" "}\n" ; vs.loadFromBuffer(vertexShader); FragmentShader fs; const char* fragmentShader = "#version 120\n" "uniform sampler2D uTexture;\n" "varying vec2 vTexture;\n" "void main(void)\n" "{\n" " gl_FragColor = texture2D(uTexture, vTexture);\n" "}\n" ; fs.loadFromBuffer(fragmentShader); mProgram.attachShader(vs); mProgram.attachShader(fs); mProgram.bindAttribLocation(0, "iVertex"); mProgram.bindAttribLocation(1, "iTexture"); mProgram.link(); mUniMVPM = mProgram.getUniformLocation("uMVPM"); mUniTexture = mProgram.getUniformLocation("uTexture"); glUniform1i(mUniTexture, 0); }