コード例 #1
0
PostProcessRenderer::PostProcessRenderer(GraphicsContext& graphicsContext)
	: _graphicsContext(graphicsContext), _quadVertexBuffer(graphicsContext.CreateVertexBuffer(BufferType::Static))
{
	static const VertexPositionTexture quadVertices[6]
	{
		VertexPositionTexture(Vector3f(-1, 1, 0), Vector2f::UnitY),
		VertexPositionTexture(Vector3f(-1, -1, 0), Vector2f::Zero),
		VertexPositionTexture(Vector3f(1, -1, 0), Vector2f::UnitX),

		VertexPositionTexture(Vector3f(-1, 1, 0), Vector2f::UnitY),
		VertexPositionTexture(Vector3f(1, -1, 0), Vector2f::UnitX),
		VertexPositionTexture(Vector3f(1, 1, 0), Vector2f::One),
	};

	_quadVertexBuffer->SetVertexData(quadVertices, Array::Length(quadVertices));
	_currentRenderTarget = _graphicsContext.CreateRenderTarget(1920, 1080, DepthBufferFormat::Depth24Stencil8);
	_backgroundRenderTarget = _graphicsContext.CreateRenderTarget(1920, 1080, DepthBufferFormat::Depth24Stencil8);

	static const std::string VertexShader = R"XXX(
		#version 330 core

		layout(location = 0) in vec3 vertexPosition;
		layout(location = 2) in vec2 vertexUV;
		out vec2 fragmentUV;

		void main(){
			gl_Position =  vec4(vertexPosition, 1);
			fragmentUV = vertexUV;
		})XXX";

	static const std::string FragmentShader = R"XXX(
		#version 330 core

		in vec2 fragmentUV;
		out vec4 color;

		uniform sampler2D TextureSampler;
		void main() {
			color = texture2D(TextureSampler, fragmentUV);
		})XXX";