Maison  >  Article  >  développement back-end  >  Comment obtenir des lignes pixélisées lors de la mise à l'échelle dans OpenGL ?

Comment obtenir des lignes pixélisées lors de la mise à l'échelle dans OpenGL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-06 01:38:02548parcourir

How to Achieve Pixelated Lines When Scaling in OpenGL?

Mise à l'échelle des lignes de pixels uniques dans OpenGL

Lors du rendu de graphiques en pixels 2D rétro, il est courant d'utiliser une résolution interne inférieure pour la pixellisation et de redimensionner la sortie à une résolution plus grande pour afficher. Cependant, la mise à l'échelle des primitives GL_LINE_LOOP peut entraîner des lignes non pixellisées.

Comprendre le problème

La fonction glOrtho d'OpenGL définit un système de coordonnées 2D où l'origine se trouve dans le coin inférieur gauche et s'étend jusqu'au coin inférieur gauche. en haut à droite. En appelant glOrtho(0, 320, 240, 0, 0, 1), vous définissez un canevas virtuel de 320 x 240.

Cependant, lorsque la fonction glViewport est utilisée pour mettre à l'échelle la sortie, le canevas virtuel n'est pas physiquement redimensionné. . Au lieu de cela, les primitives sont dessinées sur la pleine résolution de sortie (par exemple, 960 x 720), puis mises à l'échelle. Cela donne des rectangles pixélisés mais des lignes non pixellisées.

Approche correcte

La solution recommandée est de rendre une texture de la résolution virtuelle souhaitée (320x240 dans ce cas), puis de dessiner cette texture à la fenêtre à la résolution de sortie souhaitée (960x720). Cela garantit que les primitives sont rendues à la résolution virtuelle, en conservant leur apparence pixellisée.

Étapes de mise en œuvre

  1. Créez une texture d'une taille de 320x240.
  2. Attachez la texture à un objet framebuffer (FBO).
  3. Liez le FBO pour le rendu.
  4. Définissez la fenêtre d'affichage à la taille de la texture (320x240).
  5. Rendez le primitives à la texture.
  6. Dissocier le FBO.
  7. Définir la fenêtre d'affichage à la taille de la fenêtre de sortie (960x720).
  8. Lier la texture en tant qu'unité de texture.
  9. Dessinez la texture dans la fenêtre de sortie en utilisant les coordonnées appropriées.

Cette approche garantit que les lignes sont dessinées à la résolution virtuelle, conservant leur apparence pixélisée même lorsqu'elles sont mises à l'échelle à une résolution plus élevée. résolution de sortie.

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!

Déclaration:
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