ShaderProgram::ShaderProgram(ShaderFile& vertex_shader, ShaderFile& fragment_shader) {

    create();
    combineShaderPrograms(vertex_shader, fragment_shader);
    bindFragmentDataLocation();
    link();
}
示例#2
0
void AlphaMaskTextureShader::load() {
    addVertexShader("ark2d/shaders/alphamask/texture-glsl150-vertex.txt");
    addFragmentShader("ark2d/shaders/alphamask/texture-glsl150-fragment.txt");

    bindAttributeLocation(0, "ark_TextureId");
    bindAttributeLocation(1, "ark_VertexPositionIn");
    bindAttributeLocation(2, "ark_VertexNormalIn");
    bindAttributeLocation(3, "ark_VertexTexCoordIn");
    bindAttributeLocation(4, "ark_VertexColorIn");
    bindFragmentDataLocation(0, "ark_FragColor");
    link();
    linkDX();

    showAnyGlErrorAndExitMacro();
    ShaderStore::getInstance()->addShader(m_programId, this);

    RendererState::start(RendererState::SHADER, getId());

    ark_ModelMatrix = getUniformVariable("ark_ModelMatrix");
    ark_ViewMatrix = getUniformVariable("ark_ViewMatrix");
    ark_ProjectionMatrix = getUniformVariable("ark_ProjectionMatrix");
    ark_NormalMatrix = getUniformVariable("ark_NormalMatrix");

    ark_TextureId = getUniformVariable("ark_TextureId");
    ark_VertexPositionIn = 1;
    ark_VertexNormalIn = 2;
    ark_VertexTexCoordIn = 3;
    ark_VertexColorIn = 4;

    RendererState::start(RendererState::NONE);
}
示例#3
0
		void StencilShader::load() {

			if (ARK2D::getPlatform() == ARK2D::PLATFORM_ANDROID) {
				addVertexShader("ark2d/shaders/stencil/texture-glsles100-vertex.txt");
				addFragmentShader("ark2d/shaders/stencil/texture-glsles100-fragment.txt");
			} else {
				addVertexShader("ark2d/shaders/stencil/texture-glsl150-vertex.txt");
				bool err1 = hasError();
				addFragmentShader("ark2d/shaders/stencil/texture-glsl150-fragment.txt");
				bool err2 = hasError();

				if (err1 || err2) { 
					addVertexShader("ark2d/shaders/stencil/texture-glsl130-vertex.txt");
					addFragmentShader("ark2d/shaders/stencil/texture-glsl130-fragment.txt");
				}
			}

			bindAttributeLocation(0, "ark_TextureId");
			bindAttributeLocation(1, "ark_VertexPositionIn");
			bindAttributeLocation(2, "ark_VertexNormalIn");
			bindAttributeLocation(3, "ark_VertexTexCoordIn");
			bindAttributeLocation(4, "ark_VertexColorIn");
			bindFragmentDataLocation(0, "ark_FragColor");
			link(); 
			linkDX(); 

			ShaderStore::getInstance()->addShader(m_programId, this);

			RendererState::start(RendererState::SHADER, getId());

			ark_ModelMatrix = getUniformVariable("ark_ModelMatrix");
			ark_ViewMatrix = getUniformVariable("ark_ViewMatrix");
			ark_ProjectionMatrix = getUniformVariable("ark_ProjectionMatrix");
			ark_NormalMatrix = getUniformVariable("ark_NormalMatrix");
			
			ark_TextureId = getUniformVariable("ark_TextureId");
			ark_VertexPositionIn = 1;
			ark_VertexNormalIn = 2;
			ark_VertexTexCoordIn = 3;
			ark_VertexColorIn = 4;
			
			RendererState::start(RendererState::NONE);
		}
		void PointLightingGeometryShader::load() {
			setName("point-lighting-geometry");

			bool err1 = false;
			bool err2 = false;
			if (ARK2D::getPlatform() == ARK2D::PLATFORM_ANDROID) {
				addVertexShader("ark2d/shaders/point-lighting/geometry/glsles100-vertex.txt");
				addFragmentShader("ark2d/shaders/point-lighting/geometry/glsles100-fragment.txt");
			} else {
				//addVertexShader("ark2d/shaders/point-lighting/geometry/glsl330-vertex.txt");
				//bool err1 = hasError();
				//addFragmentShader("ark2d/shaders/point-lighting/geometry/glsl330-fragment.txt");
				//bool err2 = hasError();

				//if (err1 || err2) { 
					err1 = false;
					err2 = false;

					addVertexShader("ark2d/shaders/point-lighting/geometry/glsl150-vertex.txt");
					err1 = hasError();
					addFragmentShader("ark2d/shaders/point-lighting/geometry/glsl150-fragment.txt");
					err2 = hasError();

					if (err1 || err2) { 
						addVertexShader("ark2d/shaders/point-lighting/geometry/glsl130-vertex.txt");
						addFragmentShader("ark2d/shaders/point-lighting/geometry/glsl130-fragment.txt");
					}
				//}
			}

			ShaderStore::getInstance()->addShader(m_programId, this);
			
			bindAttributeLocation(0, "ark_VertexPositionIn");
			bindAttributeLocation(1, "ark_VertexNormalIn");
			bindAttributeLocation(2, "ark_VertexColorIn");
			bindFragmentDataLocation(0, "ark_FragColor");
			link(); 
			linkDX(); 

			RendererState::start(RendererState::SHADER, getId());

			ark_ModelMatrix = getUniformVariable("ark_ModelMatrix");
			ark_ViewMatrix = getUniformVariable("ark_ViewMatrix");
			ark_ProjectionMatrix = getUniformVariable("ark_ProjectionMatrix");
			ark_NormalMatrix = getUniformVariable("ark_NormalMatrix");

			_LightColor = getUniformVariable("u_sunlight.vColor");
			_LightDirection = getUniformVariable("u_sunlight.vDirection");
			_LightAmbientIntensity = getUniformVariable("u_sunlight.fAmbientIntensity");
			_LightStrength = getUniformVariable("u_sunlight.fStrength");

			_PointLightColor = getUniformVariable("u_pointlight.vColor");
			_PointLightPosition = getUniformVariable("u_pointlight.vPosition");
			_PointLightAmbient = getUniformVariable("u_pointlight.fAmbient");
			_PointLightConstantAtt = getUniformVariable("u_pointlight.fConstantAtt");
			_PointLightLinearAtt = getUniformVariable("u_pointlight.fLinearAtt");
			_PointLightExpAtt = getUniformVariable("u_pointlight.fExpAtt");
			
			ark_VertexPositionIn = 0;
			ark_VertexNormalIn = 1;
			ark_VertexColorIn = 2;
			
			RendererState::start(RendererState::NONE);
		}