Criando uma Aplicação 3D com Oryol: Do Zero ao Triângulo Renderizado

Introdução ao Framework Oryol

Oryol é um framework C++ minimalista para desenvolvimento 3D multiplataforma. Sua arquitetura modular permite criar aplicações gráficas eficientes com pouco código boilerplate. Este guia prático demonstra como construir um projeto funcional que renderiza um triângulo coloirdo.

Configuração Inicial do Ambietne

Comece obtendo o código-fonte do repositório oficial:

git clone https://gitcode.com/gh_mirrors/or/oryol
cd oryol

O diretório code/Samples/ contém exemplos didáticos. O projeto Triangle serve como ponto de partida ideal para compreender os fundamentos do framework.

Anatomia de um Projeto Oryol

Examine o arquivo Triangle.cc. A estrutura base segue o padrão:

  • Classe derivada: Herda de Oryol::App
  • Método OnInit: Configura subsistemas e recursos
  • Método OnRunning: Executa o ciclo de renderização
  • Método OnCleanup: Libera memória e encerra contextos

Implementação Passo a Passo

1. Inicialização do Subsistema Gráfico

Configure uma janela de 640x480 pixels:

auto config = GfxSetup::Window(640, 480, "Demo Oryol");
Gfx::Setup(config);

2. Definição da Geometria

Estruture os vértices com posição XYZ e cor RGBA:

// Dados do triângulo: posição XYZ + cor RGBA
const float dadosTriangulo[] = {
    // X     Y    Z     R    G    B    A
     0.0f, 0.8f, 0.0f, 1.0f, 0.2f, 0.2f, 1.0f,  // Vértice superior
    -0.6f, -0.6f, 0.0f, 0.2f, 1.0f, 0.2f, 1.0f,  // Vértice inferior esquerdo
     0.6f, -0.6f, 0.0f, 0.2f, 0.2f, 1.0f, 1.0f   // Vértice inferior direito
};

3. Configuração do Pipeline de Renderização

Crie malha, shader e pipeline:

MeshSetup configMalha;
configMalha.Layout = {
    { "position", VertexFormat::Float3 },
    { "color", VertexFormat::Float4 }
};

this->estadoDesenho.Malha[0] = Gfx::CreateResource(configMalha, dadosTriangulo, sizeof(dadosTriangulo));

Id shaderId = Gfx::CreateResource(Shader::Setup());
auto pipelineConfig = PipelineSetup::FromLayoutAndShader(configMalha.Layout, shaderId);
this->estadoDesenho.Pipeline = Gfx::CreateResource(pipelineConfig);

4. Ciclo de Renderização Principal

Implemente o loop de desenho:

bool App::OnRunning() {
    Gfx::BeginPass(PassAction::Clear(glm::vec4(0.1f, 0.1f, 0.1f, 1.0f)));
    Gfx::ApplyDrawState(this->estadoDesenho);
    Gfx::Draw(0);
    Gfx::EndPass();
    Gfx::CommitFrame();
    
    return Gfx::QuitRequested() == false;
}

Compilação e Execução

Utilize o sistema de build do Oryol:

./oryol build Triangle
./oryol run Triangle

O resultado exibirá um triângulo gradiente centralizado na janela.

Próximos Passos

Explore exemplos avançados no diretório code/Samples/Instancing para aprender sobre renderização instanciada. O módulo code/Modules/Dbg/ oferece ferramentas de debug visual. Consulte doc/GfxResourceTour.md para entender o gerenciamento de recursos em profundidade.

Tags: oryol c-plus-plus 3d-graphics rendering cross-platform

Publicado em 9-21 00:28