add GL debugging outputs
This commit is contained in:
parent
85ad605930
commit
51564fcede
@ -6,12 +6,24 @@ import javax.microedition.khronos.opengles.GL10;
|
||||
import javax.microedition.khronos.egl.EGLConfig;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.FloatBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import android.util.Log;
|
||||
|
||||
public class MyRenderer implements GLSurfaceView.Renderer
|
||||
{
|
||||
private int m_quad_attrib_buffer;
|
||||
private int m_program;
|
||||
private final String DBGTAG = "JoshsOpenGL";
|
||||
|
||||
public void checkGLError(String glOperation)
|
||||
{
|
||||
int error;
|
||||
while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR)
|
||||
{
|
||||
Log.e(DBGTAG, glOperation + ": glError " + error);
|
||||
}
|
||||
}
|
||||
|
||||
private int load_shader(int type, String source)
|
||||
{
|
||||
@ -20,6 +32,14 @@ public class MyRenderer implements GLSurfaceView.Renderer
|
||||
GLES20.glShaderSource(shader, source);
|
||||
GLES20.glCompileShader(shader);
|
||||
|
||||
IntBuffer ib = IntBuffer.allocate(1);
|
||||
GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, ib);
|
||||
if (ib.get(0) != 1)
|
||||
{
|
||||
String info_log = GLES20.glGetShaderInfoLog(shader);
|
||||
Log.e(DBGTAG, "Error compiling shader: " + info_log);
|
||||
}
|
||||
|
||||
return shader;
|
||||
}
|
||||
|
||||
@ -31,6 +51,7 @@ public class MyRenderer implements GLSurfaceView.Renderer
|
||||
-1, -1, 0, 0, 1, 0,
|
||||
1, -1, 0, 0, 0, 1
|
||||
};
|
||||
checkGLError("onSurfaceCreated");
|
||||
ByteBuffer bb = ByteBuffer.allocateDirect(attribs.length * 4);
|
||||
bb.order(ByteOrder.nativeOrder());
|
||||
FloatBuffer fb = bb.asFloatBuffer();
|
||||
@ -38,6 +59,7 @@ public class MyRenderer implements GLSurfaceView.Renderer
|
||||
fb.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,
|
||||
@ -62,6 +84,14 @@ public class MyRenderer implements GLSurfaceView.Renderer
|
||||
GLES20.glAttachShader(m_program, v_shader);
|
||||
GLES20.glAttachShader(m_program, f_shader);
|
||||
GLES20.glLinkProgram(m_program);
|
||||
checkGLError("glLinkProgram");
|
||||
IntBuffer ib = IntBuffer.allocate(1);
|
||||
GLES20.glGetProgramiv(m_program, GLES20.GL_LINK_STATUS, ib);
|
||||
if (ib.get(0) != 1)
|
||||
{
|
||||
String info_log = GLES20.glGetProgramInfoLog(m_program);
|
||||
Log.e(DBGTAG, "Program log: " + info_log);
|
||||
}
|
||||
|
||||
GLES20.glClearColor(1.0f, 0.6f, 0.1f, 1.0f);
|
||||
}
|
||||
@ -72,17 +102,22 @@ public class MyRenderer implements GLSurfaceView.Renderer
|
||||
|
||||
GLES20.glUseProgram(m_program);
|
||||
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, m_quad_attrib_buffer);
|
||||
checkGLError("glBindBuffer");
|
||||
int attr_pos = GLES20.glGetAttribLocation(m_program, "pos");
|
||||
int attr_color = GLES20.glGetAttribLocation(m_program, "color");
|
||||
GLES20.glEnableVertexAttribArray(attr_pos);
|
||||
GLES20.glEnableVertexAttribArray(attr_color);
|
||||
checkGLError("glEnableVertexAttribArray");
|
||||
GLES20.glVertexAttribPointer(attr_pos, 3, GLES20.GL_FLOAT, false,
|
||||
6 * 4, 0);
|
||||
GLES20.glVertexAttribPointer(attr_color, 3, GLES20.GL_FLOAT, false,
|
||||
6 * 4, 3 * 4);
|
||||
checkGLError("glVertexAttribPointer");
|
||||
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, 4);
|
||||
checkGLError("glDrawArrays");
|
||||
GLES20.glDisableVertexAttribArray(attr_pos);
|
||||
GLES20.glDisableVertexAttribArray(attr_color);
|
||||
checkGLError("glDisableVertexAttribArray");
|
||||
}
|
||||
|
||||
public void onSurfaceChanged(GL10 unused, int width, int height)
|
||||
|
Loading…
x
Reference in New Issue
Block a user