Maison > développement back-end > C++ > Comment dessiner des lignes 1px dans OpenGL avec mise à l'échelle de résolution interne ?

Comment dessiner des lignes 1px dans OpenGL avec mise à l'échelle de résolution interne ?

DDD
Libérer: 2024-11-04 00:25:30
original
495 Les gens l'ont consulté

How to Draw 1px Lines in OpenGL with Internal Resolution Scaling?

Mise à l'échelle des lignes 1px dans OpenGL

Problème :

Un jeu avec une résolution interne de 320x240 est mis à l'échelle pour s'afficher à des résolutions plus élevées (par exemple, 960 x 720). Bien que les graphiques pixélisés soient rendus correctement, les lignes tracées avec GL_LINE_LOOP sont mises à l'échelle jusqu'à 3 px, ce qui entraîne un pixel art incorrect.

Question :

Comment dessiner des lignes sur le vue interne 320x240 au lieu de la vue d'affichage 960x720 ?

Réponse :

L'idée fausse est l'existence d'une "toile glOrtho 320x240". OpenGL restitue uniquement à la résolution réelle de la fenêtre (par exemple, 960 x 720). La mise à l'échelle des coordonnées transforme simplement les points finaux primitifs mais n'affecte pas la rastérisation.

Pour dessiner correctement des lignes de 1 px :

  1. Créez une texture 320 x 240 et attachez-la à un objet framebuffer (FBO).
  2. Liez le FBO et définissez la fenêtre d'affichage à la taille de la texture (320x240).
  3. Rendu à la texture à l'aide de glOrtho(0, 320, 240, 0, 0, 1).
  4. Dissociez le FBO.
  5. Liez la texture et dessinez-la dans la fenêtre, en définissant la fenêtre d'affichage à la taille de la fenêtre (par exemple, 960 x 720).

En rendant une image hors écran de la résolution réelle, puis en la mettant à l'échelle, une rastérisation appropriée des lignes pixélisées peut être obtenue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal