97 #ifdef QT_OPENGL_ES_2 |
97 #ifdef QT_OPENGL_ES_2 |
98 |
98 |
99 #define PROGRAM_VERTEX_ATTRIBUTE 0 |
99 #define PROGRAM_VERTEX_ATTRIBUTE 0 |
100 #define PROGRAM_TEXCOORD_ATTRIBUTE 1 |
100 #define PROGRAM_TEXCOORD_ATTRIBUTE 1 |
101 |
101 |
102 QGLShader *vshader = new QGLShader(QGLShader::VertexShader, this); |
102 QGLShader *vshader = new QGLShader(QGLShader::Vertex, this); |
103 const char *vsrc = |
103 const char *vsrc = |
104 "attribute highp vec4 vertex;\n" |
104 "attribute highp vec4 vertex;\n" |
105 "attribute mediump vec4 texCoord;\n" |
105 "attribute mediump vec4 texCoord;\n" |
106 "varying mediump vec4 texc;\n" |
106 "varying mediump vec4 texc;\n" |
107 "uniform mediump mat4 matrix;\n" |
107 "uniform mediump mat4 matrix;\n" |
108 "void main(void)\n" |
108 "void main(void)\n" |
109 "{\n" |
109 "{\n" |
110 " gl_Position = matrix * vertex;\n" |
110 " gl_Position = matrix * vertex;\n" |
111 " texc = texCoord;\n" |
111 " texc = texCoord;\n" |
112 "}\n"; |
112 "}\n"; |
113 vshader->compile(vsrc); |
113 vshader->compileSourceCode(vsrc); |
114 |
114 |
115 QGLShader *fshader = new QGLShader(QGLShader::FragmentShader, this); |
115 QGLShader *fshader = new QGLShader(QGLShader::Fragment, this); |
116 const char *fsrc = |
116 const char *fsrc = |
117 "uniform sampler2D texture;\n" |
117 "uniform sampler2D texture;\n" |
118 "varying mediump vec4 texc;\n" |
118 "varying mediump vec4 texc;\n" |
119 "void main(void)\n" |
119 "void main(void)\n" |
120 "{\n" |
120 "{\n" |
121 " gl_FragColor = texture2D(texture, texc.st);\n" |
121 " gl_FragColor = texture2D(texture, texc.st);\n" |
122 "}\n"; |
122 "}\n"; |
123 fshader->compile(fsrc); |
123 fshader->compileSourceCode(fsrc); |
124 |
124 |
125 program = new QGLShaderProgram(this); |
125 program = new QGLShaderProgram(this); |
126 program->addShader(vshader); |
126 program->addShader(vshader); |
127 program->addShader(fshader); |
127 program->addShader(fshader); |
128 program->bindAttributeLocation("vertex", PROGRAM_VERTEX_ATTRIBUTE); |
128 program->bindAttributeLocation("vertex", PROGRAM_VERTEX_ATTRIBUTE); |
129 program->bindAttributeLocation("texCoord", PROGRAM_TEXCOORD_ATTRIBUTE); |
129 program->bindAttributeLocation("texCoord", PROGRAM_TEXCOORD_ATTRIBUTE); |
130 program->link(); |
130 program->link(); |
131 |
131 |
132 program->enable(); |
132 program->bind(); |
133 program->setUniformValue("texture", 0); |
133 program->setUniformValue("texture", 0); |
134 |
134 |
135 #endif |
135 #endif |
136 } |
136 } |
137 |
137 |
161 m.rotate(xRot / 16.0f, 1.0f, 0.0f, 0.0f); |
161 m.rotate(xRot / 16.0f, 1.0f, 0.0f, 0.0f); |
162 m.rotate(yRot / 16.0f, 0.0f, 1.0f, 0.0f); |
162 m.rotate(yRot / 16.0f, 0.0f, 1.0f, 0.0f); |
163 m.rotate(zRot / 16.0f, 0.0f, 0.0f, 1.0f); |
163 m.rotate(zRot / 16.0f, 0.0f, 0.0f, 1.0f); |
164 |
164 |
165 program->setUniformValue("matrix", m); |
165 program->setUniformValue("matrix", m); |
|
166 program->enableAttributeArray(PROGRAM_VERTEX_ATTRIBUTE); |
|
167 program->enableAttributeArray(PROGRAM_TEXCOORD_ATTRIBUTE); |
166 program->setAttributeArray |
168 program->setAttributeArray |
167 (PROGRAM_VERTEX_ATTRIBUTE, vertices.constData()); |
169 (PROGRAM_VERTEX_ATTRIBUTE, vertices.constData()); |
168 program->setAttributeArray |
170 program->setAttributeArray |
169 (PROGRAM_TEXCOORD_ATTRIBUTE, texCoords.constData()); |
171 (PROGRAM_TEXCOORD_ATTRIBUTE, texCoords.constData()); |
170 |
172 |