"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como renderizar um quadro OpenGL em um formulário C++ Builder usando TForm::Handle?

Como renderizar um quadro OpenGL em um formulário C++ Builder usando TForm::Handle?

Publicado em 2024-11-07
Navegar:809

How to Render an OpenGL Frame in a C   Builder Form Using TForm::Handle?

Renderizando um quadro OpenGL no C Builder

Pergunta

Quero renderizar um quadro OpenGL dentro de um formulário no C Builder, mas estou encontrando problemas ao seguir o código de inicialização OpenGL fornecido. Como posso resolver isso?

Resposta

Utilizando TForm::Handle como Window Handle

A solução está em usar TForm::Handle como o identificador de janela.

Amostra de implementação

Aqui está um exemplo adaptado de uma versão mais antiga do C Builder:

int TForm1::ogl_init()
{
    if (ogl_inicialized)
        return 1;
    hdc = GetDC(Form1->Handle); // Get device context
    PIXELFORMATDESCRIPTOR pfd;
    // Set pixel format for the DC
    ...
    // Create current rendering context
    hrc = wglCreateContext(hdc);
    if (hrc == NULL)
    {
        ShowMessage("Could not initialize OpenGL Rendering context !!!");
        ogl_inicialized = 0;
        return 0;
    }
    if (!wglMakeCurrent(hdc, hrc))
    {
        wglDeleteContext(hrc); // Destroy rendering context
        ogl_inicialized = 0;
        return 0;
    }
    // ...
    ogl_inicialized = 1;
    return 1;
}

Notas adicionais

  • Inclua os cabeçalhos necessários: e
  • Crie um cronômetro para acionar a renderização.
  • Trate de eventos para redimensionamento de formulário, repintura e entrada da roda do mouse.
  • Certifique-se de que gl.h esteja incluído no projeto.
  • Consulte o forneceu links para técnicas OpenGL mais avançadas.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3