Guest User

GLerror

a guest
May 24th, 2012
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.55 KB | None | 0 0
  1. #include "GLTriangle.h"
  2.  
  3. #include "SimpleGlFuncs.h"
  4.  
  5.  
  6. static const char gVertexShader[] =
  7.     "attribute vec4 vPosition;\n"
  8.         "attribute vec4 vColor;\n"
  9.         "\n"
  10.         "varying mediump vec4 fColor;"
  11.         "\n"
  12.     "void main() {\n"
  13.     "  gl_Position = vPosition;\n"
  14.         "  fColor = vColor;\n"
  15.     "}\n";
  16.  
  17. static const char gFragmentShader[] =
  18.     "precision mediump float;\n"
  19.         "\n"
  20.         "varying mediump vec4 fColor;\n"
  21.         "\n"
  22.     "void main() {\n"
  23.     "  gl_FragColor = fColor;\n"
  24.     "}\n";
  25.  
  26. static const GLfloat gTriangleVertices[] = {
  27.                  0.0f,  0.9f, 0.0f,
  28.                 -0.9f, -0.9f, 0.0f,
  29.          0.9f, -0.9f,  0.0f,
  30.  
  31.          0.0f, 0.5f,  0.5f,
  32.          0.5f, 0.5f, 0.0f,
  33.          0.5f, 0.5f, 0.0f,
  34. };
  35.  
  36. GLTriangle::GLTriangle() {
  37.         m_program = createProgram(gVertexShader, gFragmentShader);
  38.  
  39.         m_position = glGetAttribLocation(m_program, "vPosition");
  40.         checkGlError("glGetAttribLocation");
  41.         LOGI("glGetAttribLocation(\"vPosition\") = %d\n",
  42.                         m_position);
  43.  
  44.         m_color = glGetAttribLocation(m_program, "vColor");
  45.         checkGlError("glGetAttribLocation(vColor)");
  46.         LOGI("glGetAttribLocation(\"vColor\") = %d\n",
  47.                         m_color);
  48.  
  49.         this->bufferSetup();
  50. }
  51.  
  52. GLTriangle::~GLTriangle() {
  53.         // TODO Auto-generated destructor stub
  54. }
  55.  
  56. void GLTriangle::bufferSetup()
  57. {
  58.         glUseProgram(m_program);
  59.         checkGlError("GLTriangle::bufferSetup glUseProgram(m_program);");
  60.  
  61.         {
  62.                 glGenBuffers(1,&m_buffer);
  63.                 checkGlError("GLTriangle::bufferSetup glGenBuffers");
  64.  
  65.                 glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
  66.                 checkGlError("GLTriangle::bufferSetup glBufferData");
  67.  
  68.                 glBufferData(GL_ARRAY_BUFFER,sizeof(float)*(3+3)*3,gTriangleVertices,GL_DYNAMIC_DRAW);
  69.                 checkGlError("GLTriangle::bufferSetup glBufferData");
  70.         }
  71.  
  72.  
  73.  
  74. }
  75.  
  76. void GLTriangle::setA(const float* xyz)
  77. {
  78.     glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
  79.     checkGlError("GLTriangle::setA glBindBuffer");
  80.  
  81.     glBufferSubData(GL_ARRAY_BUFFER,sizeof(float)*0*3 ,sizeof(float)*3,xyz);
  82.     checkGlError("GLTriangle::setA glBufferSubData");
  83. }
  84.  
  85. void GLTriangle::setB(const float* xyz)
  86. {
  87.     glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
  88.     glBufferSubData(GL_ARRAY_BUFFER,sizeof(float)*1*3,sizeof(float)*3,xyz);
  89. }
  90.  
  91. void GLTriangle::setC(const float* xyz)
  92. {
  93.     glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
  94.     glBufferSubData(GL_ARRAY_BUFFER,sizeof(float)*2*3,sizeof(float)*3,xyz);
  95. }
  96.  
  97.  
  98. void GLTriangle::draw()
  99. {
  100.     checkGlError("Start GLTriangle::draw()");
  101.  
  102.  
  103.     glUseProgram(m_program);
  104.     checkGlError("glUseProgram");
  105.  
  106.  
  107.     glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
  108.     checkGlError("GLTriangle::draw glBindBuffer");
  109.  
  110.     {
  111.       glVertexAttribPointer(m_position, 3, GL_FLOAT, GL_FALSE, 0, 0);
  112.       checkGlError("GLTriangle::bufferSetup glVertexAttribPointer(gvPositionHandle,...");
  113.  
  114.       glEnableVertexAttribArray(m_position);
  115.       checkGlError("GLTriangle::bufferSetup glEnableVertexAttribArray(gvPositionHandle);");
  116.  
  117.       glVertexAttribPointer(m_color, 3, GL_FLOAT, GL_FALSE, 0, (void*) (3*3*sizeof(float)) );
  118.       checkGlError("GLTriangle::bufferSetup glVertexAttribPointer(gvColorHandler,...");
  119.  
  120.       glEnableVertexAttribArray(m_color);
  121.       checkGlError("GLTriangle::bufferSetup glEnableVertexAttribArray(gvColorHandler);");
  122.     }
  123.  
  124.  
  125.     glDrawArrays(GL_TRIANGLES, 0, 3);
  126.     checkGlError("GLTriangle::draw glDrawArrays");
  127. }
Advertisement
Add Comment
Please, Sign In to add comment