我最近拿起了renderscript,真的很喜歡它,但缺乏文檔和示例並沒有幫助。我已經設法使用動態壁紙和示例來獲取自己的動態壁紙,但一直在使用固定功能着色器進行貼圖處理。Renderscript FixedFunction着色器的外觀如何?
我已經看過GLSL教程,但它似乎沒有完全翻譯。我研究過renderscript源代碼,但它仍然沒有太多的幫助。
下面是一些代碼,我從那個好像的renderScript來源挖出什麼固定功能是這樣做的:
計劃頂點
shaderString.append("varying vec4 varColor;\n");
shaderString.append("varying vec2 varTex0;\n");
shaderString.append("void main() {\n");
shaderString.append(" gl_Position = UNI_MVP * ATTRIB_position;\n");
shaderString.append(" gl_PointSize = 1.0;\n");
shaderString.append(" varColor = ATTRIB_color;\n");
shaderString.append(" varTex0 = ATTRIB_texture0;\n");
shaderString.append("}\n");
程序片段
shaderString.append("varying lowp vec4 varColor;\n");
shaderString.append("varying vec2 varTex0;\n");
shaderString.append("void main() {\n");
shaderString.append(" lowp vec4 col = UNI_Color;\n");
shaderString.append(" gl_FragColor = col;\n");
shaderString.append("}\n");
我不不認爲這些是最好的例子,因爲這個片段似乎沒有觸及varTex0變量。我試圖寫我自己的程序片段並使用固定功能頂點着色器。
這裏是我的片段着色器:
ProgramFragment.Builder b = new ProgramFragment.Builder(mRS);
String s = "void main() {" +
" gl_FragColor = vec4(1.0,1.0,1.0,0.5);" +
"}";
b.setShader(s);
pf = b.create();
mScript.set_gPFLights(pf);
非常基本的,但在結合紋理失敗的任何企圖。我不知道紋理需要什麼變量。
任何人都可以提供一個使用紋理的基本程序頂點和程序片段的例子嗎?提前致謝。
是的,但該示例仍然只使用固定功能程序片段,因此不幸的是它沒有揭示那些看起來像什麼。 – 2012-02-18 05:35:03