double-hit-balls/game/main_code.cpp

209 lines
5.4 KiB
C++
Raw Normal View History

2017-01-10 12:43:06 +00:00
#include "main_code.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include "include/Engine.h"
#include "main_code.h"
2017-11-14 17:04:04 +00:00
TMyApplication* Application;
2017-01-10 12:43:06 +00:00
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerInit()
2017-01-10 12:43:06 +00:00
{
Application = this;
#ifdef TARGET_WIN32
#ifdef NDEBUG
ST::PathToResources = "resources/";
#else
ST::PathToResources = "../../../assets/";
#endif
#endif
#ifdef TARGET_IOS
ST::PathToResources = "assets/";
#endif
if (Console != NULL)
{
*Console<<"APP INIT\n";
}
2017-11-14 17:04:04 +00:00
srand (static_cast<size_t>(time(NULL)));
2017-01-10 12:43:06 +00:00
ResourceManager->ShaderManager.AddShader("DefaultShader", "shader1vertex.txt", "shader1fragment.txt");
ResourceManager->ShaderManager.AddShader("FrameShader", "frameshader_vertex.txt", "frameshader_fragment.txt");
2017-12-02 10:25:02 +00:00
ResourceManager->ShaderManager.AddShader("ColorShader", "color_vertex.txt", "color_fragment.txt");
ResourceManager->ShaderManager.AddShader("SSAA_4X", "SSAA_4X.vertex", "SSAA_4X.frag");
2017-01-10 12:43:06 +00:00
Renderer->PushShader("DefaultShader");
2017-11-14 17:04:04 +00:00
2017-01-10 12:43:06 +00:00
ResourceManager->TexList.AddTexture("console_bkg.bmp");
2017-11-14 17:04:04 +00:00
2017-12-04 11:14:14 +00:00
ResourceManager->FrameManager.AddFrameRenderBuffer("LevelBuffer", 512, 512);
2017-11-14 17:04:04 +00:00
2017-12-04 11:14:14 +00:00
pair.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(0, 0, 0));
pair.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(0, 512, 0));
pair.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(512, 512, 0));
pair.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(0, 0, 0));
pair.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(512, 512, 0));
pair.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(512, 0, 0));
pair.second.Data.Vec4CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(Vector4f(1, 0, 0, 1));
pair.second.Data.Vec4CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(Vector4f(1, 0, 0, 1));
pair.second.Data.Vec4CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(Vector4f(0, 1, 0, 1));
pair.second.Data.Vec4CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(Vector4f(0, 0, 1, 1));
pair.second.Data.Vec4CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(Vector4f(0, 0, 1, 1));
pair.second.Data.Vec4CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(Vector4f(0, 1, 0, 1));
pair.first.ShaderName = "ColorShader";
pair.second.RefreshBuffer();
rect.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(0, 0, 0));
rect.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(0, 512, 0));
rect.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(512, 512, 0));
rect.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(512, 512, 0));
rect.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(512, 0, 0));
rect.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(Vector3f(0, 0, 0));
rect.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0, 0));
rect.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0, 1));
rect.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(1, 1));
rect.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(1, 1));
rect.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(1, 0));
rect.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0, 0));
rect.second.RefreshBuffer();
2017-01-10 12:43:06 +00:00
Renderer->SetOrthoProjection();
Renderer->SetFullScreenViewport();
2017-12-02 10:25:02 +00:00
2017-12-04 11:14:14 +00:00
Inited = true;
2017-12-02 10:25:02 +00:00
2017-01-10 12:43:06 +00:00
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerDeinit()
2017-01-10 12:43:06 +00:00
{
Inited = false;
Loaded = false;
if (Console != NULL)
{
*Console<<"APP DEINIT\n";
}
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerOnTapDown(Vector2f p)
{
2017-12-04 11:14:14 +00:00
2017-01-10 12:43:06 +00:00
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerOnTapUp(Vector2f p)
{
2017-12-04 11:14:14 +00:00
2017-01-10 12:43:06 +00:00
}
2017-02-26 23:07:37 +00:00
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerOnTapUpAfterMove(Vector2f p)
2017-02-26 23:07:37 +00:00
{
2017-12-04 11:14:14 +00:00
2017-02-26 23:07:37 +00:00
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerOnMove(Vector2f p, Vector2f shift)
2017-01-10 12:43:06 +00:00
{
2017-12-04 11:14:14 +00:00
2017-01-10 12:43:06 +00:00
}
2017-11-14 17:04:04 +00:00
void TMyApplication::OnFling(Vector2f v)
2017-01-10 12:43:06 +00:00
{
}
2017-12-04 11:14:14 +00:00
void TMyApplication::InnerDraw()
2017-01-10 12:43:06 +00:00
{
2017-12-04 11:14:14 +00:00
Renderer->SwitchToFrameBuffer("LevelBuffer");
Renderer->SetProjectionMatrix(512.f, 512.f);
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
CheckGlError("");
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
{
TRenderParamsSetter params(pair.first);
Renderer->DrawTriangleList(pair.second);
}
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
CheckGlError("");
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
Renderer->SwitchToScreen();
Renderer->SetFullScreenViewport();
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
const float cos30 = sqrt(3) / 2;
const float sin30 = 0.5f;
const float sampleRadiusX = 0.75 / 512;
const float sampleRadiusY = 0.75 / 512;
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
Matrix2f rotate30Matrix;
rotate30Matrix(0, 0) = cos30;
rotate30Matrix(0, 1) = sin30;
rotate30Matrix(1, 0) = -sin30;
rotate30Matrix(1, 1) = cos30;
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
Renderer->PushShader("SSAA_4X");
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
std::array<Vector2f, 4> sampleVector = {
Vector2f(sampleRadiusX, sampleRadiusY),
Vector2f(-sampleRadiusX, sampleRadiusY),
Vector2f(-sampleRadiusX, -sampleRadiusY),
Vector2f(sampleRadiusX, -sampleRadiusY)
};
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
for (size_t i = 0; i < 4; i++)
2017-01-10 12:43:06 +00:00
{
2017-12-04 11:14:14 +00:00
sampleVector[i] = rotate30Matrix * sampleVector[i];
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
RenderUniform2fv("samplesOffset[" + boost::lexical_cast<std::string>(i) + "]", &sampleVector[i][0]);
2017-01-10 12:43:06 +00:00
}
2017-12-04 11:14:14 +00:00
glBindTexture(GL_TEXTURE_2D, ResourceManager->FrameManager.GetFrameTexture("LevelBuffer"));
Renderer->DrawTriangleList(rect.second);
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
Renderer->PopShader();
2017-01-10 12:43:06 +00:00
2017-12-04 11:14:14 +00:00
CheckGlError("");
2017-01-10 12:43:06 +00:00
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerUpdate(size_t dt)
2017-01-10 12:43:06 +00:00
{
}
2017-11-14 17:04:04 +00:00
bool TMyApplication::IsLoaded()
2017-01-10 12:43:06 +00:00
{
return Loaded;
}
2017-11-14 17:04:04 +00:00
bool TMyApplication::IsInited()
2017-01-10 12:43:06 +00:00
{
return Inited;
}