Example #1
0
	void Renderer::ShaderToy(std::string pShader, vec2 pPosition, vec2 pSize, std::string pTexture1, std::string pTexture2, std::string pTexture3, std::string pTexture4)
	{
		if (_userPrograms.find(pShader) != _userPrograms.end())
		{
			Program* program = _userPrograms[pShader];
			glUseProgram(program->GetProgram());
			glBindVertexArray(_baseVAO);
			glUniform4f(program->GetUniforms()["PositionSize"].Location, pPosition.x, pPosition.y, pSize.x, pSize.y);
				
			if(pTexture1 != "" && program->IsUniformActive("Texture0"))
				glUniformHandleui64ARB(program->GetUniforms()["Texture0"].Location, _userTextures[pTexture1]->GetHandle());
			if (pTexture2 != "" && program->IsUniformActive("Texture1"))
				glUniformHandleui64ARB(program->GetUniforms()["Texture1"].Location, _userTextures[pTexture2]->GetHandle());
			if (pTexture3 != "" && program->IsUniformActive("Texture2"))
				glUniformHandleui64ARB(program->GetUniforms()["Texture2"].Location, _userTextures[pTexture3]->GetHandle());
			if (pTexture4 != "" && program->IsUniformActive("Texture3"))
				glUniformHandleui64ARB(program->GetUniforms()["Texture3"].Location, _userTextures[pTexture4]->GetHandle());

			if (program->IsUniformActive("iGlobalTime"))
				glUniform1f(program->GetUniforms()["iGlobalTime"].Location, Clock::GetRef().GetTotalTime());
				
			if (program->IsUniformActive("iMouse"))
			{
				vec4 mouse = vec4(
					_uiFunctionPtr->GetCurrentInputPtr()->IsLeftButtonDown() || _uiFunctionPtr->GetCurrentInputPtr()->IsRightButtonDown() ?
					_uiFunctionPtr->GetCurrentInputPtr()->GetMousePosition() : vec2(0.0,0.0), 
					_uiFunctionPtr->GetCurrentInputPtr()->IsLeftButtonDown() ? 1.0 : 0.0,
					_uiFunctionPtr->GetCurrentInputPtr()->IsRightButtonDown() ? 1.0 : 0.0);

				glUniform4f(program->GetUniforms()["iMouse"].Location,mouse.x,mouse.y,mouse.z,mouse.w);
			}

			glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
		}
	}
Example #2
0
	void Renderer::DrawText(std::string pPath, vec2 pPosition)
	{
		Program* program = _programs["Texture"];
		glUseProgram(program->GetProgram());
		glBindVertexArray(_baseVAO);
		glUniform4f(program->GetUniforms()["PositionSize"].Location, pPosition.x, pPosition.y, (GLfloat)_userTexts[pPath]->GetWidth(), (GLfloat)_userTexts[pPath]->GetHeight());
		glUniformHandleui64ARB(program->GetUniforms()["Texture"].Location, _userTexts[pPath]->GetHandle());
		glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
	}
Example #3
0
	void Renderer::DrawImage(GLuint64 pHandle, vec2 pPosition, vec2 pSize)
	{
		Program* program = _programs["Texture"];
		glUseProgram(program->GetProgram());
		glBindVertexArray(_baseVAO);
		glUniform4f(program->GetUniforms()["PositionSize"].Location, pPosition.x, pPosition.y, pSize.x, pSize.y);
		glUniformHandleui64ARB(program->GetUniforms()["Texture"].Location, pHandle);
		glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
	}