Title pretty much says it all. This would be so much easier if I were to just use a single class for this. But I have been trying to take advantage of Java's class system. To the point I get the "Error creating shader".
package com.braindrool.game; > > >> import android.opengl.GLES20; > > >> public class Shader { > > >> public Shader(String vertexShader, String fragmentShader) { > > int vertexShaderHandle = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER); > > if (vertexShaderHandle != 0) { > > GLES20.glShaderSource(vertexShaderHandle, vertexShader); > > GLES20.glCompileShader(vertexShaderHandle); > > final int[] vertexCompileStatus = new int[1]; > > GLES20.glGetShaderiv(vertexShaderHandle, GLES20.GL_COMPILE_STATUS, > > vertexCompileStatus, 0); > > if (vertexCompileStatus[0] == 0) { > > GLES20.glDeleteShader(vertexShaderHandle); > > System.err.println("Deleting vertex shader"); > > vertexShaderHandle = 0; > > } > > } > > if (vertexShaderHandle == 0) { > > } > > int fragmentShaderHandle = GLES20 > > .glCreateShader(GLES20.GL_FRAGMENT_SHADER); > > >> if (fragmentShaderHandle != 0) { > > System.out.println("Fragmentshaderhandle success"); > > GLES20.glShaderSource(fragmentShaderHandle, fragmentShader); > > GLES20.glCompileShader(fragmentShaderHandle); > > final int[] fragmentCompileStatus = new int[1]; > > GLES20.glGetShaderiv(fragmentShaderHandle, > > GLES20.GL_COMPILE_STATUS, fragmentCompileStatus, 0); > > if (fragmentCompileStatus[0] == 0) { > > GLES20.glDeleteShader(fragmentShaderHandle); > > fragmentShaderHandle = 0; > > } > > } > > >> if (fragmentShaderHandle == 0) { > > System.err.println("Error creating fragment shader."); > > } > > >> System.out > > .println(linkShaders(vertexShaderHandle, fragmentShaderHandle)); > > } > > >> private int linkShaders(int vertexHandle, int fragmentHandle) { > > int programHandle = GLES20.glCreateProgram(); > > >> if (programHandle != 0) { > > GLES20.glAttachShader(programHandle, vertexHandle); > > GLES20.glAttachShader(programHandle, fragmentHandle); > > GLES20.glBindAttribLocation(programHandle, 0, "a_Position"); > > GLES20.glBindAttribLocation(programHandle, 1, "a_Color"); > > GLES20.glLinkProgram(programHandle); > > final int[] linkStatus = new int[1]; > > GLES20.glGetProgramiv(programHandle, GLES20.GL_LINK_STATUS, > > linkStatus, 0); > > if (linkStatus[0] == 0) { > > GLES20.glDeleteProgram(programHandle); > > programHandle = 0; > > } > > } > > >> if (programHandle == 0) { > > System.err.println("Error creating program."); > > } > > return programHandle; > > } > > } > > > And the call to that function / class: private void finishLoading() { > > >> mGLView.queueEvent(new Runnable() { > > public void run() { > > shader = new Shader(asset("shaders/vertex/default"), > > asset("shaders/fragment/default")); > > } > > }); > > Questions and help greatly appreciated! -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en