Browse Source

添加fullscreenquad类

master
blobt 4 years ago
parent
commit
85f7511207
  1. 96
      fullscreenquad.cpp
  2. 17
      fullscreenquad.h
  3. 7
      shader.cpp

96
fullscreenquad.cpp

@ -0,0 +1,96 @@
#include "fullscreenquad.h"
void FullScreenQuad::Init()
{
mVertexBuffer = new VertexBuffer();
mVertexBuffer->SetSize(4);
mVertexBuffer->SetTexcoord(0, 0.0f, 0.0f);
mVertexBuffer->SetTexcoord(1, 1.0f, 0.0f);
mVertexBuffer->SetTexcoord(2, 0.0f, 1.0f);
mVertexBuffer->SetTexcoord(3, 1.0f, 1.0f);
mShader = new Shader();
}
void FullScreenQuad::Draw() {
//µ¥Î»¾ØÕó
float identity[] = {
1.0f,0.0f,0.0f,0.0f,
0.0f,1.0f,0.0f,0.0f,
0.0f,0.0f,1.0f,0.0f,
0.0f,0.0f,0.0f,1.0f,
};
mVertexBuffer->SetPosition(0, -1.0f, -1.0f, 0.0f);
mVertexBuffer->SetPosition(1, 1.0f, -1.0f, 0.0f);
mVertexBuffer->SetPosition(2, -1.0f, 1.0f, 0.0f);
mVertexBuffer->SetPosition(3, 1.0f, 1.0f, 0.0f);
mVertexBuffer->Bind();
mShader->Bind(identity, identity, identity);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
mVertexBuffer->Unbind();
}
void FullScreenQuad::DrawToLeftTop() {
float identity[] = {
1.0f,0.0f,0.0f,0.0f,
0.0f,1.0f,0.0f,0.0f,
0.0f,0.0f,1.0f,0.0f,
0.0f,0.0f,0.0f,1.0f,
};
mVertexBuffer->SetPosition(0, -1.0f, 0.0f, -1.0f);
mVertexBuffer->SetPosition(1, 0.0f, 0.0f, -1.0f);
mVertexBuffer->SetPosition(2, -1.0f, 1.0f, -1.0f);
mVertexBuffer->SetPosition(3, 0.0f, 1.0f, -1.0f);
mVertexBuffer->Bind();
mShader->Bind(identity, identity, identity);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
mVertexBuffer->Unbind();
}
void FullScreenQuad::DrawToLeftBottom() {
float identity[] = {
1.0f,0.0f,0.0f,0.0f,
0.0f,1.0f,0.0f,0.0f,
0.0f,0.0f,1.0f,0.0f,
0.0f,0.0f,0.0f,1.0f,
};
mVertexBuffer->SetPosition(0, -1.0f, -1.0f, -1.0f);
mVertexBuffer->SetPosition(1, 0.0f, -1.0f, -1.0f);
mVertexBuffer->SetPosition(2, -1.0f, 0.0f, -1.0f);
mVertexBuffer->SetPosition(3, 0.0f, 0.0f, -1.0f);
mVertexBuffer->Bind();
mShader->Bind(identity, identity, identity);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
mVertexBuffer->Unbind();
}
void FullScreenQuad::DrawToRightTop() {
float identity[] = {
1.0f,0.0f,0.0f,0.0f,
0.0f,1.0f,0.0f,0.0f,
0.0f,0.0f,1.0f,0.0f,
0.0f,0.0f,0.0f,1.0f,
};
mVertexBuffer->SetPosition(0, 0.0f, 0.0f, -1.0f);
mVertexBuffer->SetPosition(1, 1.0f, 0.0f, -1.0f);
mVertexBuffer->SetPosition(2, 0.0f, 1.0f, -1.0f);
mVertexBuffer->SetPosition(3, 1.0f, 1.0f, -1.0f);
mVertexBuffer->Bind();
mShader->Bind(identity, identity, identity);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
mVertexBuffer->Unbind();
}
void FullScreenQuad::DrawToRightBottom() {
float identity[] = {
1.0f,0.0f,0.0f,0.0f,
0.0f,1.0f,0.0f,0.0f,
0.0f,0.0f,1.0f,0.0f,
0.0f,0.0f,0.0f,1.0f,
};
mVertexBuffer->SetPosition(0, 0.0f, -1.0f, -1.0f);
mVertexBuffer->SetPosition(1, 1.0f, -1.0f, -1.0f);
mVertexBuffer->SetPosition(2, 0.0f, 0.0f, -1.0f);
mVertexBuffer->SetPosition(3, 1.0f, 0.0f, -1.0f);
mVertexBuffer->Bind();
mShader->Bind(identity, identity, identity);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
mVertexBuffer->Unbind();
}

17
fullscreenquad.h

@ -0,0 +1,17 @@
#pragma once
#include "ggl.h"
#include "vertexbuffer.h"
#include "shader.h"
class FullScreenQuad {
public:
VertexBuffer *mVertexBuffer;
Shader *mShader;
public:
void Init();
void Draw();
void DrawToLeftTop();
void DrawToRightTop();
void DrawToLeftBottom();
void DrawToRightBottom();
};

7
shader.cpp

@ -184,10 +184,3 @@ GLuint Shader::SetTextureCube(const char * name, GLuint texture) {
} }
return oldTexture; return oldTexture;
} }
Loading…
Cancel
Save