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

Reply via email to