examples/opengl/textures/glwidget.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
    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