drawing quad, but using pos as color

This commit is contained in:
Josh Holtrop 2012-11-06 22:03:35 -05:00
parent 51564fcede
commit d1b87e3ec6

View File

@ -12,9 +12,9 @@ import android.util.Log;
public class MyRenderer implements GLSurfaceView.Renderer public class MyRenderer implements GLSurfaceView.Renderer
{ {
private int m_quad_attrib_buffer;
private int m_program; private int m_program;
private final String DBGTAG = "JoshsOpenGL"; private final String DBGTAG = "JoshsOpenGL";
private FloatBuffer m_quad_attrib_buffer;
public void checkGLError(String glOperation) public void checkGLError(String glOperation)
{ {
@ -54,16 +54,9 @@ public class MyRenderer implements GLSurfaceView.Renderer
checkGLError("onSurfaceCreated"); checkGLError("onSurfaceCreated");
ByteBuffer bb = ByteBuffer.allocateDirect(attribs.length * 4); ByteBuffer bb = ByteBuffer.allocateDirect(attribs.length * 4);
bb.order(ByteOrder.nativeOrder()); bb.order(ByteOrder.nativeOrder());
FloatBuffer fb = bb.asFloatBuffer(); m_quad_attrib_buffer = bb.asFloatBuffer();
fb.put(attribs); m_quad_attrib_buffer.put(attribs);
fb.position(0); m_quad_attrib_buffer.position(0);
int[] buffers = {0};
GLES20.glGenBuffers(1, buffers, 0);
checkGLError("glGenBuffers");
m_quad_attrib_buffer = buffers[0];
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, m_quad_attrib_buffer);
GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, 0, fb,
GLES20.GL_STATIC_DRAW);
final String v_shader_src = final String v_shader_src =
"attribute vec3 pos;" + "attribute vec3 pos;" +
@ -101,7 +94,6 @@ public class MyRenderer implements GLSurfaceView.Renderer
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
GLES20.glUseProgram(m_program); GLES20.glUseProgram(m_program);
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, m_quad_attrib_buffer);
checkGLError("glBindBuffer"); checkGLError("glBindBuffer");
int attr_pos = GLES20.glGetAttribLocation(m_program, "pos"); int attr_pos = GLES20.glGetAttribLocation(m_program, "pos");
int attr_color = GLES20.glGetAttribLocation(m_program, "color"); int attr_color = GLES20.glGetAttribLocation(m_program, "color");
@ -109,9 +101,9 @@ public class MyRenderer implements GLSurfaceView.Renderer
GLES20.glEnableVertexAttribArray(attr_color); GLES20.glEnableVertexAttribArray(attr_color);
checkGLError("glEnableVertexAttribArray"); checkGLError("glEnableVertexAttribArray");
GLES20.glVertexAttribPointer(attr_pos, 3, GLES20.GL_FLOAT, false, GLES20.glVertexAttribPointer(attr_pos, 3, GLES20.GL_FLOAT, false,
6 * 4, 0); 6 * 4, m_quad_attrib_buffer);
GLES20.glVertexAttribPointer(attr_color, 3, GLES20.GL_FLOAT, false, GLES20.glVertexAttribPointer(attr_color, 3, GLES20.GL_FLOAT, false,
6 * 4, 3 * 4); 6 * 4, m_quad_attrib_buffer);
checkGLError("glVertexAttribPointer"); checkGLError("glVertexAttribPointer");
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, 4); GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, 4);
checkGLError("glDrawArrays"); checkGLError("glDrawArrays");