Scene cleaned up a bit

master
Joey Pollack 3 years ago
parent a3a8743d21
commit b7ffc48525

@ -231,22 +231,31 @@ namespace lunarium
} }
glm::mat4 model = glm::mat4(1.0f); glm::mat4 model = glm::mat4(1.0f);
glm::rotate(model, angle, glm::vec3(0.0f, 0.0f, 1.0f)); model = glm::translate(model, glm::vec3(point_a.x, point_a.y, 0.0f));
//model = glm::rotate(model, angle, glm::vec3(0.0f, 0.0f, 1.0f));
// V1 // V1
LineData::Vertex v1; LineData::Vertex v1;
int vert_size = sizeof(LineData::Vertex); int vert_size = sizeof(LineData::Vertex);
//glm::vec4 long_pos = glm::vec4(point_a.x, point_a.y, 0.0f, 1.0f) * model; glm::vec4 long_pos = model * glm::vec4(-0.5f, 0.0f, 0.0f, 1.0f);
v1.pos = point_a;//glm::vec2(long_pos.x, long_pos.y); v1.pos = glm::vec2(long_pos.x, long_pos.y);
// v1.translate = glm::vec3(point_a.x, point_a.y, 0.0f);
v1.color = color; v1.color = color;
//v1.angle = angle;
memcpy(&mLineData.RawVertexBuffer[mLineData.RawBufferIndex], &v1, vert_size); memcpy(&mLineData.RawVertexBuffer[mLineData.RawBufferIndex], &v1, vert_size);
mLineData.RawBufferIndex += 1; mLineData.RawBufferIndex += 1;
model = glm::mat4(1.0f);
model = glm::translate(model, glm::vec3(point_b.x, point_b.y, 0.0f));
// model = glm::rotate(model, angle, glm::vec3(0.0f, 0.0f, 1.0f));
// V2 // V2
LineData::Vertex v2; LineData::Vertex v2;
//long_pos = glm::vec4(point_b.x, point_b.y, 0.0f, 1.0f) * model; long_pos = model * glm::vec4(0.5f, 0.0f, 0.0f, 1.0f);
v2.pos = point_b;//glm::vec2(long_pos.x, long_pos.y); v2.pos = glm::vec2(long_pos.x, long_pos.y);
// v2.translate = glm::vec3(point_b.x, point_b.y, 0.0f);
v2.color = color; v2.color = color;
//v2.angle = angle;
memcpy(&mLineData.RawVertexBuffer[mLineData.RawBufferIndex], &v2, vert_size); memcpy(&mLineData.RawVertexBuffer[mLineData.RawBufferIndex], &v2, vert_size);
mLineData.RawBufferIndex += 1; mLineData.RawBufferIndex += 1;
@ -256,7 +265,7 @@ namespace lunarium
void Renderer2D::DrawBox(Rectangle box, Color color, float thickness, float angle) void Renderer2D::DrawBox(Rectangle box, Color color, float thickness, float angle)
{ {
Logger::Warn(LogCategory::GRAPHICS, "Renderer2D::DrawBox is not implemented yet");
} }
void Renderer2D::DrawEllipse(glm::vec2 center_point, glm::vec2 radii, Color color, bool filled, float thickness, float angle) void Renderer2D::DrawEllipse(glm::vec2 center_point, glm::vec2 radii, Color color, bool filled, float thickness, float angle)
@ -304,6 +313,9 @@ namespace lunarium
glDrawElements(GL_TRIANGLES, mQuadData.NumQuads * 6, GL_UNSIGNED_INT, nullptr); glDrawElements(GL_TRIANGLES, mQuadData.NumQuads * 6, GL_UNSIGNED_INT, nullptr);
// Checking how the rotation looks when lines are drawn instead
//glDrawArrays(GL_LINES, 0, mQuadData.NumQuads * 4);
// mQuadData.WireFrameShader->Use(); // mQuadData.WireFrameShader->Use();
// uprojview.Location = -1; // uprojview.Location = -1;
// mQuadData.WireFrameShader->SetUniform(uprojview, (void*)glm::value_ptr(mpCamera->GetViewProjection())).LogIfFailed(LogCategory::GRAPHICS); // mQuadData.WireFrameShader->SetUniform(uprojview, (void*)glm::value_ptr(mpCamera->GetViewProjection())).LogIfFailed(LogCategory::GRAPHICS);
@ -433,7 +445,9 @@ namespace lunarium
OpRes Renderer2D::InitLineData() OpRes Renderer2D::InitLineData()
{ {
mLineData.BufferLayout.PushVertexAttribute(VertexAttribute { VertexAttributeType::FLOAT32, 2 }); // Position mLineData.BufferLayout.PushVertexAttribute(VertexAttribute { VertexAttributeType::FLOAT32, 2 }); // Position
// mLineData.BufferLayout.PushVertexAttribute(VertexAttribute { VertexAttributeType::FLOAT32, 3 }); // Translate
mLineData.BufferLayout.PushVertexAttribute(VertexAttribute { VertexAttributeType::FLOAT32, 4 }); // Color mLineData.BufferLayout.PushVertexAttribute(VertexAttribute { VertexAttributeType::FLOAT32, 4 }); // Color
// mLineData.BufferLayout.PushVertexAttribute(VertexAttribute { VertexAttributeType::FLOAT32, 1 }); // angle
mLineData.VertexBuffer = VertexBuffer::Create(mLineData.BufferLayout, mLineData.MaxVertices); mLineData.VertexBuffer = VertexBuffer::Create(mLineData.BufferLayout, mLineData.MaxVertices);
mLineData.RawVertexBuffer = new LineData::Vertex[mLineData.MaxVertices]; mLineData.RawVertexBuffer = new LineData::Vertex[mLineData.MaxVertices];

@ -9,6 +9,6 @@ uniform mat4 projview;
void main() void main()
{ {
o_Color = color; o_Color = color;//vec4(angle / 10.0, 0.0, 0.0, 1.0);
gl_Position = projview * vec4(position, 0.0, 1.0); gl_Position = projview * vec4(position, 0.0, 1.0);
} }

@ -27,7 +27,7 @@
namespace lunarium namespace lunarium
{ {
SimpleRenderScene::SimpleRenderScene(uint32_t logCat) SimpleRenderScene::SimpleRenderScene(uint32_t logCat)
: BaseScene(logCat), mTestMode(TestMode::Basic), mFrameTime(0.0), mNumFrames(0), mpTestImageLoad3(nullptr) : BaseScene(logCat), mTestMode(TestMode::Basic), mShapeMode(ShapeMode::Lines), mFrameTime(0.0), mNumFrames(0), mpTestImageLoad3(nullptr)
{ {
srand((u32)time(0)); srand((u32)time(0));
} }
@ -247,13 +247,30 @@ namespace lunarium
void SimpleRenderScene::RenderShapesTest(Renderer2D& g) void SimpleRenderScene::RenderShapesTest(Renderer2D& g)
{ {
g.DrawLine(glm::vec2(30.0f, 200.0f), glm::vec2(400.0f, 400.0f), Color::Green(), 3.0f); switch (mShapeMode)
{
case ShapeMode::Boxes:
{
} break;
case ShapeMode::Lines:
{
g.DrawLine(glm::vec2(30.0f, 200.0f), glm::vec2(400.0f, 400.0f), Color::Green(), 3.0f, box_angle * 3.0f);
for (auto iter = mLines.begin(); iter != mLines.end(); iter++) for (auto iter = mLines.begin(); iter != mLines.end(); iter++)
{ {
g.DrawLine(iter->Position1, iter->Position2, iter->Color, iter->Thickness, iter->Angle); g.DrawLine(iter->Position1, iter->Position2, iter->Color, iter->Thickness, iter->Angle);
iter->Angle += iter->RotSpeed; iter->Angle += iter->RotSpeed;
} }
} break;
case ShapeMode::Ellipses:
{
} break;
}
} }
@ -308,6 +325,9 @@ namespace lunarium
} }
else if (mTestMode == TestMode::Shapes) else if (mTestMode == TestMode::Shapes)
{ {
const char* shape_types[3] = { "Lines", "Boxes", "Ellipses" };
ImGui::Combo("Shape Type", (int*)&mShapeMode, shape_types, 3);
ImGui::Separator();
ImGui::DragInt("Number of Lines", &mNumLines); ImGui::DragInt("Number of Lines", &mNumLines);
if (ImGui::Button("Regenerate Shapes")) if (ImGui::Button("Regenerate Shapes"))
{ {

@ -28,6 +28,14 @@ namespace lunarium
String, String,
Shapes, Shapes,
}; };
enum ShapeMode
{
Lines,
Boxes,
Ellipses,
};
public: public:
SimpleRenderScene(uint32_t logCat); SimpleRenderScene(uint32_t logCat);
~SimpleRenderScene(); ~SimpleRenderScene();
@ -63,6 +71,7 @@ namespace lunarium
Renderer2D::FrameStats mRenderStats; Renderer2D::FrameStats mRenderStats;
TestMode mTestMode; TestMode mTestMode;
ShapeMode mShapeMode;
// STRESS TEST MODE // STRESS TEST MODE
int mNumQuadsToRender = 500; int mNumQuadsToRender = 500;

Loading…
Cancel
Save