void ProgramFragmentState::init(Context *rsc) { String8 shaderString(RS_SHADER_INTERNAL); 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"); ObjectBaseRef<const Element> colorElem = Element::createRef(rsc, RS_TYPE_FLOAT_32, RS_KIND_USER, false, 4); Element::Builder builder; builder.add(colorElem.get(), "Color", 1); ObjectBaseRef<const Element> constInput = builder.create(rsc); ObjectBaseRef<Type> inputType = Type::getTypeRef(rsc, constInput.get(), 1, 0, 0, false, false); uint32_t tmp[2]; tmp[0] = RS_PROGRAM_PARAM_CONSTANT; tmp[1] = (uint32_t)inputType.get(); Allocation *constAlloc = Allocation::createAllocation(rsc, inputType.get(), RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS); ProgramFragment *pf = new ProgramFragment(rsc, shaderString.string(), shaderString.length(), tmp, 2); pf->bindAllocation(rsc, constAlloc, 0); pf->setConstantColor(rsc, 1.0f, 1.0f, 1.0f, 1.0f); mDefault.set(pf); }
void ProgramFragmentState::init(Context *rsc) { const char *shaderString = RS_SHADER_INTERNAL "varying lowp vec4 varColor;\n" "varying vec2 varTex0;\n" "void main() {\n" " lowp vec4 col = UNI_Color;\n" " gl_FragColor = col;\n" "}\n"; ObjectBaseRef<const Element> colorElem = Element::createRef(rsc, RS_TYPE_FLOAT_32, RS_KIND_USER, false, 4); const char *enames[] = { "Color" }; const Element *eins[] = {colorElem.get()}; ObjectBaseRef<const Element> constInput = Element::create(rsc, 1, eins, enames); ObjectBaseRef<Type> inputType = Type::getTypeRef(rsc, constInput.get(), 1); uintptr_t tmp[2]; tmp[0] = RS_PROGRAM_PARAM_CONSTANT; tmp[1] = (uintptr_t)inputType.get(); Allocation *constAlloc = Allocation::createAllocation(rsc, inputType.get(), RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS); ProgramFragment *pf = new ProgramFragment(rsc, shaderString, strlen(shaderString), nullptr, 0, nullptr, tmp, 2); pf->bindAllocation(rsc, constAlloc, 0); pf->setConstantColor(rsc, 1.0f, 1.0f, 1.0f, 1.0f); mDefault.set(pf); }