move shader sources into asset files

This commit is contained in:
Josh Holtrop 2012-11-07 22:03:06 -05:00
parent 0c45755ea1
commit 63a9a5cd4b
5 changed files with 55 additions and 16 deletions

View File

@ -0,0 +1,7 @@
varying vec3 color_i;
void main()
{
gl_FragColor = vec4(color_i, 1);
}

View File

@ -0,0 +1,10 @@
attribute vec3 pos;
attribute vec3 color;
varying vec3 color_i;
void main()
{
gl_Position = vec4(pos * 0.75, 1);
color_i = color;
}

View File

@ -3,6 +3,7 @@ package com.homelinux.holtrop.opengltest;
import android.opengl.GLSurfaceView;
import android.app.Activity;
import android.os.Bundle;
import android.content.res.AssetManager;
public class MainOpenGL extends Activity
{
@ -14,7 +15,7 @@ public class MainOpenGL extends Activity
{
super.onCreate(savedInstanceState);
mGLView = new MyGLSurfaceView(this);
mGLView = new MyGLSurfaceView(this, getAssets());
setContentView(mGLView);
}
}

View File

@ -2,16 +2,17 @@ package com.homelinux.holtrop.opengltest;
import android.opengl.GLSurfaceView;
import android.content.Context;
import android.content.res.AssetManager;
public class MyGLSurfaceView extends GLSurfaceView
{
public MyGLSurfaceView(Context context)
public MyGLSurfaceView(Context context, AssetManager am)
{
super(context);
setEGLContextClientVersion(2);
setRenderer(new MyRenderer());
setRenderer(new MyRenderer(am));
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}

View File

@ -9,12 +9,23 @@ import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.ByteOrder;
import android.util.Log;
import android.content.res.AssetManager;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class MyRenderer implements GLSurfaceView.Renderer
{
private int m_program;
private final String DBGTAG = "JoshsOpenGL";
private FloatBuffer m_quad_attrib_buffer;
private AssetManager m_asset_manager;
public MyRenderer(AssetManager am)
{
m_asset_manager = am;
}
public void checkGLError(String glOperation)
{
@ -25,6 +36,26 @@ public class MyRenderer implements GLSurfaceView.Renderer
}
}
private String read_asset(String fname)
{
String result = "";
try
{
InputStream is = m_asset_manager.open(fname);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null)
{
result += line + "\n";
}
}
catch (IOException ioe)
{
}
return result;
}
private int load_shader(int type, String source)
{
int shader = GLES20.glCreateShader(type);
@ -58,19 +89,8 @@ public class MyRenderer implements GLSurfaceView.Renderer
m_quad_attrib_buffer.put(attribs);
m_quad_attrib_buffer.position(0);
final String v_shader_src =
"attribute vec3 pos;" +
"attribute vec3 color;" +
"varying vec3 color_i;" +
"void main() {" +
" gl_Position = vec4(pos / 2.0, 1);" +
" color_i = color;" +
"}";
final String f_shader_src =
"varying vec3 color_i;" +
"void main() {" +
" gl_FragColor = vec4(color_i, 1);" +
"}";
final String v_shader_src = read_asset("shaders/vertex.glsl");
final String f_shader_src = read_asset("shaders/fragment.glsl");
int v_shader = load_shader(GLES20.GL_VERTEX_SHADER, v_shader_src);
int f_shader = load_shader(GLES20.GL_FRAGMENT_SHADER, f_shader_src);
m_program = GLES20.glCreateProgram();