descargar - opengl windows 7
¿Deberíamos usar OpenGL para gráficos 2D? (2)
Si queremos crear una aplicación como MS Paint, ¿deberíamos usar OpenGL para renderizar gráficos? Quiero mencionar el rendimiento si se usa GDI tradicional vs. OpenGL. Y si existen algunas librerías mejores para este propósito, por favor mírame una.
GDI, X11, OpenGL ... están generando API, es decir, generalmente no las usa para la manipulación de imágenes (puede hacerlo, pero requiere algunas precauciones).
En una aplicación de dibujo como MS Paint, si está basada en píxeles, normalmente manipularás un búfer de imagen con código habitual o una biblioteca especial de manipulación de imágenes, y luego enviarás el búfer completo a la API de renderizado.
Si su modelo de datos consiste en trazos y formas individuales, es decir, gráficos vectoriales, entonces OpenGL es un back-end bastante bueno. Sin embargo, puede valer la pena buscar en otra API para gráficos vectoriales, como OpenVG (que en sus implementaciones actuales se encuentra en la parte superior de OpenGL, pero las implementaciones nativas que operan directamente en la GPU pueden venir).
En su escenario de uso, no se encontrará con ningún problema de rendimiento en las computadoras actuales, por lo que no elija su API a partir de ese criterio. OpenGL es definitivamente más rápido que GDI cuando se trata de texturizar, mezclar alfa, etc. Sin embargo, dependiendo del sistema y la GPU, GDI puro puede superar a OpenGL en cosas tan simples como dibujar un arco o llenar un complejo polígono de intersección con complejas reglas de devanado.
No hay una buena razón para no usar OpenGL para esto. Excepto quizás si tiene años de experiencia con GDI, pero no sabe nada sobre OpenGL.
Por otro lado, OpenGL puede ser superior en muchos casos. La composición de capas o el ajuste de matiz / saturación / brillo / contraste en un sombreador GLSL será varios órdenes de magnitud más rápido (de hecho, más o menos "instantáneamente") si hay una tarjeta razonablemente nueva en la computadora. Acariciar un trazado de dibujo libre con un lápiz "difuso" (es decir, mezclar un objeto con transparencia alfa una y otra vez) será de orden de magnitud más rápido. En las imágenes con dimensiones algo razonables, la mayoría de los núcleos de filtro deben ejecutarse cerca de tiempo real. El reescalado con filtrado bilineal se ejecuta en hardware.
Tales cosas no importarán en una imagen de 512x512, ya que casi todo es instantáneo en esas resoluciones, pero en una imagen típica de 4096x3072 (o más grande) de su cámara digital, puede ser muy notable, especialmente si tiene 4-6 capas .