diff options
author | Jason Sams <rjsams@android.com> | 2009-11-25 13:22:07 -0800 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2009-11-25 13:22:07 -0800 |
commit | bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9 (patch) | |
tree | 55de9e729267eb463e07599b6b809fb4635c9472 /libs/rs/rsProgram.cpp | |
parent | 3fdee335fe95ab94ef1ee619ad37f9369447fde5 (diff) | |
download | frameworks_base-bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9.zip frameworks_base-bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9.tar.gz frameworks_base-bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9.tar.bz2 |
Begin gl2 support. Renderscript still uses GL1.1 by default. However, 2.0 can be enabled and will render most tests correctly.
Diffstat (limited to 'libs/rs/rsProgram.cpp')
-rw-r--r-- | libs/rs/rsProgram.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libs/rs/rsProgram.cpp b/libs/rs/rsProgram.cpp index ed5918b..8e9ba08 100644 --- a/libs/rs/rsProgram.cpp +++ b/libs/rs/rsProgram.cpp @@ -17,6 +17,9 @@ #include "rsContext.h" #include "rsProgram.h" +#include <GLES2/gl2.h> +#include <GLES2/gl2ext.h> + using namespace android; using namespace android::renderscript; @@ -25,6 +28,10 @@ Program::Program(Context *rsc, Element *in, Element *out) : ObjectBase(rsc) { mAllocFile = __FILE__; mAllocLine = __LINE__; + mDirty = true; + mShaderID = 0; + mAttribCount = 0; + mUniformCount = 0; mElementIn.set(in); mElementOut.set(out); @@ -51,4 +58,41 @@ void Program::bindAllocation(Allocation *alloc) mDirty = true; } +void Program::createShader() +{ +} + +bool Program::loadShader(uint32_t type) +{ + mShaderID = glCreateShader(type); + rsAssert(mShaderID); + + LOGV("Loading shader type %x", type); + LOGE(mShader.string()); + + if (mShaderID) { + const char * ss = mShader.string(); + glShaderSource(mShaderID, 1, &ss, NULL); + glCompileShader(mShaderID); + GLint compiled = 0; + glGetShaderiv(mShaderID, GL_COMPILE_STATUS, &compiled); + if (!compiled) { + GLint infoLen = 0; + glGetShaderiv(mShaderID, GL_INFO_LOG_LENGTH, &infoLen); + if (infoLen) { + char* buf = (char*) malloc(infoLen); + if (buf) { + glGetShaderInfoLog(mShaderID, infoLen, NULL, buf); + LOGE("Could not compile shader \n%s\n", buf); + free(buf); + } + glDeleteShader(mShaderID); + mShaderID = 0; + return false; + } + } + } + LOGV("--Shader load result %x ", glGetError()); + return true; +} |