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.