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::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
LineData::Vertex v1;
int vert_size = sizeof(LineData::Vertex);
//glm::vec4 long_pos = glm::vec4(point_a.x, point_a.y, 0.0f, 1.0f) * model;
v1.pos = point_a;//glm::vec2(long_pos.x, long_pos.y);
glm::vec4 long_pos = model * glm::vec4(-0.5f, 0.0f, 0.0f, 1.0f);
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.angle = angle;
memcpy(&mLineData.RawVertexBuffer[mLineData.RawBufferIndex], &v1, vert_size);
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
LineData::Vertex v2;
//long_pos = glm::vec4(point_b.x, point_b.y, 0.0f, 1.0f) * model;
v2.pos = point_b;//glm::vec2(long_pos.x, long_pos.y);
long_pos = model * glm::vec4(0.5f, 0.0f, 0.0f, 1.0f);
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.angle = angle;
memcpy(&mLineData.RawVertexBuffer[mLineData.RawBufferIndex], &v2, vert_size);
mLineData.RawBufferIndex += 1;
@ -256,7 +265,7 @@ namespace lunarium
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)
@ -304,6 +313,9 @@ namespace lunarium
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();
// uprojview.Location = -1;
// mQuadData.WireFrameShader->SetUniform(uprojview, (void*)glm::value_ptr(mpCamera->GetViewProjection())).LogIfFailed(LogCategory::GRAPHICS);
@ -433,7 +445,9 @@ namespace lunarium
OpRes Renderer2D::InitLineData()
{
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, 1 }); // angle
mLineData.VertexBuffer = VertexBuffer::Create(mLineData.BufferLayout, mLineData.MaxVertices);
mLineData.RawVertexBuffer = new LineData::Vertex[mLineData.MaxVertices];

@ -9,6 +9,6 @@ uniform mat4 projview;
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);
}

@ -27,7 +27,7 @@
namespace lunarium
{
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));
}
@ -247,13 +247,30 @@ namespace lunarium
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++)
{
g.DrawLine(iter->Position1, iter->Position2, iter->Color, iter->Thickness, iter->Angle);
iter->Angle += iter->RotSpeed;
}
} break;
case ShapeMode::Ellipses:
{
} break;
}
}
@ -308,6 +325,9 @@ namespace lunarium
}
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);
if (ImGui::Button("Regenerate Shapes"))
{

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

Loading…
Cancel
Save