| 110 | } |
| 111 | |
| 112 | void GLWidget::initializeGL() |
| 113 | { |
| 114 | makeObject(); |
| 115 | |
| 116 | glEnable(GL_DEPTH_TEST); |
| 117 | glEnable(GL_CULL_FACE); |
| 118 | #ifndef QT_OPENGL_ES_2 |
| 119 | glEnable(GL_TEXTURE_2D); |
| 120 | #endif |
| 121 | |
| 122 | #ifdef QT_OPENGL_ES_2 |
| 123 | |
| 124 | #define PROGRAM_VERTEX_ATTRIBUTE 0 |
| 125 | #define PROGRAM_TEXCOORD_ATTRIBUTE 1 |
| 126 | |
| 127 | QGLShader *vshader = new QGLShader(QGLShader::Vertex, this); |
| 128 | const char *vsrc = |
| 129 | "attribute highp vec4 vertex;\n" |
| 130 | "attribute mediump vec4 texCoord;\n" |
| 131 | "varying mediump vec4 texc;\n" |
| 132 | "uniform mediump mat4 matrix;\n" |
| 133 | "void main(void)\n" |
| 134 | "{\n" |
| 135 | " gl_Position = matrix * vertex;\n" |
| 136 | " texc = texCoord;\n" |
| 137 | "}\n"; |
| 138 | vshader->compileSourceCode(vsrc); |
| 139 | |
| 140 | QGLShader *fshader = new QGLShader(QGLShader::Fragment, this); |
| 141 | const char *fsrc = |
| 142 | "uniform sampler2D texture;\n" |
| 143 | "varying mediump vec4 texc;\n" |
| 144 | "void main(void)\n" |
| 145 | "{\n" |
| 146 | " gl_FragColor = texture2D(texture, texc.st);\n" |
| 147 | "}\n"; |
| 148 | fshader->compileSourceCode(fsrc); |
| 149 | |
| 150 | program = new QGLShaderProgram(this); |
| 151 | program->addShader(vshader); |
| 152 | program->addShader(fshader); |
| 153 | program->bindAttributeLocation("vertex", PROGRAM_VERTEX_ATTRIBUTE); |
| 154 | program->bindAttributeLocation("texCoord", PROGRAM_TEXCOORD_ATTRIBUTE); |
| 155 | program->link(); |
| 156 | |
| 157 | program->bind(); |
| 158 | program->setUniformValue("texture", 0); |
| 159 | |
| 160 | #endif |
| 161 | } |
| 162 | |
| 163 | /*------------------------------------------------------------------------------ |
| 164 | | OpenMAXILTextureLoader::getEGLImage |