Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "GLTriangle.h"
- #include "SimpleGlFuncs.h"
- static const char gVertexShader[] =
- "attribute vec4 vPosition;\n"
- "attribute vec4 vColor;\n"
- "\n"
- "varying mediump vec4 fColor;"
- "\n"
- "void main() {\n"
- " gl_Position = vPosition;\n"
- " fColor = vColor;\n"
- "}\n";
- static const char gFragmentShader[] =
- "precision mediump float;\n"
- "\n"
- "varying mediump vec4 fColor;\n"
- "\n"
- "void main() {\n"
- " gl_FragColor = fColor;\n"
- "}\n";
- static const GLfloat gTriangleVertices[] = {
- 0.0f, 0.9f, 0.0f,
- -0.9f, -0.9f, 0.0f,
- 0.9f, -0.9f, 0.0f,
- 0.0f, 0.5f, 0.5f,
- 0.5f, 0.5f, 0.0f,
- 0.5f, 0.5f, 0.0f,
- };
- GLTriangle::GLTriangle() {
- m_program = createProgram(gVertexShader, gFragmentShader);
- m_position = glGetAttribLocation(m_program, "vPosition");
- checkGlError("glGetAttribLocation");
- LOGI("glGetAttribLocation(\"vPosition\") = %d\n",
- m_position);
- m_color = glGetAttribLocation(m_program, "vColor");
- checkGlError("glGetAttribLocation(vColor)");
- LOGI("glGetAttribLocation(\"vColor\") = %d\n",
- m_color);
- this->bufferSetup();
- }
- GLTriangle::~GLTriangle() {
- // TODO Auto-generated destructor stub
- }
- void GLTriangle::bufferSetup()
- {
- glUseProgram(m_program);
- checkGlError("GLTriangle::bufferSetup glUseProgram(m_program);");
- {
- glGenBuffers(1,&m_buffer);
- checkGlError("GLTriangle::bufferSetup glGenBuffers");
- glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
- checkGlError("GLTriangle::bufferSetup glBufferData");
- glBufferData(GL_ARRAY_BUFFER,sizeof(float)*(3+3)*3,gTriangleVertices,GL_DYNAMIC_DRAW);
- checkGlError("GLTriangle::bufferSetup glBufferData");
- }
- }
- void GLTriangle::setA(const float* xyz)
- {
- glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
- checkGlError("GLTriangle::setA glBindBuffer");
- glBufferSubData(GL_ARRAY_BUFFER,sizeof(float)*0*3 ,sizeof(float)*3,xyz);
- checkGlError("GLTriangle::setA glBufferSubData");
- }
- void GLTriangle::setB(const float* xyz)
- {
- glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
- glBufferSubData(GL_ARRAY_BUFFER,sizeof(float)*1*3,sizeof(float)*3,xyz);
- }
- void GLTriangle::setC(const float* xyz)
- {
- glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
- glBufferSubData(GL_ARRAY_BUFFER,sizeof(float)*2*3,sizeof(float)*3,xyz);
- }
- void GLTriangle::draw()
- {
- checkGlError("Start GLTriangle::draw()");
- glUseProgram(m_program);
- checkGlError("glUseProgram");
- glBindBuffer(GL_ARRAY_BUFFER,m_buffer);
- checkGlError("GLTriangle::draw glBindBuffer");
- {
- glVertexAttribPointer(m_position, 3, GL_FLOAT, GL_FALSE, 0, 0);
- checkGlError("GLTriangle::bufferSetup glVertexAttribPointer(gvPositionHandle,...");
- glEnableVertexAttribArray(m_position);
- checkGlError("GLTriangle::bufferSetup glEnableVertexAttribArray(gvPositionHandle);");
- glVertexAttribPointer(m_color, 3, GL_FLOAT, GL_FALSE, 0, (void*) (3*3*sizeof(float)) );
- checkGlError("GLTriangle::bufferSetup glVertexAttribPointer(gvColorHandler,...");
- glEnableVertexAttribArray(m_color);
- checkGlError("GLTriangle::bufferSetup glEnableVertexAttribArray(gvColorHandler);");
- }
- glDrawArrays(GL_TRIANGLES, 0, 3);
- checkGlError("GLTriangle::draw glDrawArrays");
- }
Advertisement
Add Comment
Please, Sign In to add comment