Skip to content

Commit

Permalink
Textures definietly working, and can seemlessly switch between opengl…
Browse files Browse the repository at this point in the history
… and vulkan
  • Loading branch information
tomheeleynz committed Nov 26, 2022
1 parent 0ed6fc3 commit 75ef065
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 3 deletions.
34 changes: 33 additions & 1 deletion Arcane/src/Arcane/Platform/OpenGL/OpenGLRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ namespace Arcane
{
OpenGLRenderer::OpenGLRenderer()
{

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}

void OpenGLRenderer::Shutdown()
Expand Down Expand Up @@ -125,6 +126,37 @@ namespace Arcane

void OpenGLRenderer::RenderQuad(VertexBuffer* buffer, Pipeline* pipeline, std::vector<DescriptorSet*> descriptorSets)
{
OpenGLVertexBuffer* vertexBuffer = static_cast<OpenGLVertexBuffer*>(buffer);
OpenGLPipeline* openglPipeline = static_cast<OpenGLPipeline*>(pipeline);
OpenGLVertexDescriptor* vertexDescriptor = static_cast<OpenGLVertexDescriptor*>(openglPipeline->GetSpec().descriptor);
OpenGLIndexBuffer* indexBuffer = static_cast<OpenGLIndexBuffer*>(vertexBuffer->GetIndexBuffer());
OpenGLShader* shader = static_cast<OpenGLShader*>(openglPipeline->GetSpec().shader);

// Bind Shader
openglPipeline->BindShader();

// Bind VAO
if (!vertexDescriptor->GetIsGenerated()) {
vertexDescriptor->Generate(buffer);
}

openglPipeline->BindVertexDescriptor();
indexBuffer->Bind();

// Bind Descriptor Sets
for (int i = 0; i < descriptorSets.size(); i++) {
OpenGLDescriptorSet* descriptorSet = static_cast<OpenGLDescriptorSet*>(descriptorSets[i]);
descriptorSet->BindTextures(shader->GetShaderID());
}

// Draw
glDrawElements(GL_TRIANGLES, indexBuffer->GetCount(), GL_UNSIGNED_INT, 0);

// Unbind Everyting
openglPipeline->UnbindVertexDescriptor();
openglPipeline->UnbindShader();
vertexBuffer->UnBind();
indexBuffer->UnBind();
}

void OpenGLRenderer::RenderMesh(VertexBuffer* buffer, Pipeline* pipeline, std::vector<DescriptorSet*> descriptorSets)
Expand Down
2 changes: 1 addition & 1 deletion EnchantingTable/src/EnchantingTable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class EnchantingTableApplication : public Arcane::Application
int main()
{
// -- Set API to Vulkan
Arcane::RendererAPI::SetAPI(Arcane::RendererAPIType::OpenGL);
Arcane::RendererAPI::SetAPI(Arcane::RendererAPIType::Vulkan);

// Set Application Specifications
Arcane::ApplicationSpecifications specs;
Expand Down
2 changes: 1 addition & 1 deletion EnchantingTable/src/OpenGLTestLayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ void OpenGLTestLayer::OnUpdate(float deltaTime)
{
Arcane::Renderer::BeginRenderPass(m_RenderPass);
{
Arcane::Renderer::RenderQuad(m_VertexBuffer, m_Pipeline);
Arcane::Renderer::RenderQuad(m_VertexBuffer, m_Pipeline, { m_DescriptorSet });
}
Arcane::Renderer::EndRenderPass(m_RenderPass);
}
Expand Down

0 comments on commit 75ef065

Please sign in to comment.