Pergunta

Pelo que entendi, não havia módulos nas primeiras versões do Qt, havia classes separadas com funções diferentes, inclusive gráficas.O suporte Opengl foi realizado no qt 1.2.No entanto, QPainter, QImage existiam em versões anteriores.Então, é correto dizer que essas aulas são nativas (ou seja, aulas que eram primordiais);classes opengl - não nativas (afinal, é um ramo separado)?Eu gostaria de aprender uma evolução adicional do Qtopengl como forma não nativa e alternativa de criação de gráficos 2D no Qt, influência deste módulo na evolução dos métodos nativos (para criação de gráficos 2D).

Foi útil?

Solução

.

Então, é correto dizer que essas classes são nativas?

Não, não é.

A razão para isso é "nativa" significaria coisas diferentes para pessoas diferentes. É a questão da interpretação. Veja a sua outra pergunta quão confuso conseguimos.

Até agora, acho que você quer dizer "não-opengl" 2 / 3D por nativo. Isso provavelmente significa rasterização de software em vez de estar passando diretamente pelo driver de exibição. Então, ainda no nível QT, mas sem as aulas OpenGL no Qt.

Agora, este é o ponto em que podemos voltar para QIMAge e QPaintter. Sim, qpainter é basicamente a geração inicial para a rasterização de software desde os tempos em que GPUs não eram tão comuns e baratos como nos dias de hoje.

Eles basicamente estão fazendo a renderização puramente com técnicas de software. Isto é, é mais limitado, mas funcionou sem hardwares mais caros e menos comuns ao redor.

(aqueles foram os tempos de terremoto e outros produtos de software, momentos divertidos olhando para a perspectiva de hoje ...)

Outras dicas

Se por "nativo" você quer dizer "assistido por hardware", então a linha não é mais tão clara.Observe que QPainter pode usar vários motores de pintura para fazer a pintura, então apenas usando um QPainter não significa nada por si só.

Se por "assistido por hardware" se significa apenas usar algo mais do que inteiro legado ou unidades de execução de ponto flutuante da CPU, então sim, o mecanismo de pintura raster usa várias operações SIMD/vetoradas quando disponíveis.O mecanismo de pintura raster é o mecanismo usado para pintar QImage, QPixmap e não GL QWidget.

Se por "assistência de hardware" você quer dizer "renderizado pelo hardware da placa gráfica", será necessário usar um mecanismo de pintura OpenGL.É usado quando você pinta em um QGLWidget ou em um QQuickPaintedItem.É claro que a pintura ainda é definida pelo software - a configuração da geometria e os shaders são apenas códigos!Este software é executado em hardware que pode executá-lo muito mais rápido do que CPUs de uso geral.

Dado que o pipeline OpenGL de função fixa é mais ou menos um artefato histórico atualmente, não é incorreto afirmar que todos A renderização no Qt é feita usando técnicas puramente de software, mas o software pode ser executado em uma CPU de uso geral ou aproveitar unidades de execução SIMD/vetor em uma CPU de uso geral ou pode ser executado em uma GPU.

Também deve ser dito que os drivers típicos do Windows hoje em dia não acelerar o desenho GDI/gdiplus diferente de blits.Assim, ao fazer desenhos 2D usando o mecanismo raster, especialmente em versões mais antigas do Windows como XP, o Qt pode ser mais rápido do que o desenho 2D nativo da plataforma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top