Cómo recortar la representación en OpenGL (área de rectángulo simple)? Por favor, publique un ejemplo de C++.Cómo recortar la representación en OpenGL (C++)
Respuesta
Si solo desea mostrar un rectángulo específico, necesita una combinación de algo como glFrustrum
o glOrtho
junto con glViewPort
. De hecho, es glViewPort
que establece el rectángulo de recorte. glFrustrum
, glOrtho
(gluPerspective
, etc.) luego mapea un conjunto de coordenadas reales a ese rectángulo. Normalmente, apenas nota el glViewPort
, porque normalmente se establece en toda el área de la ventana que está usando, y lo que cambia es la asignación para obtener diferentes vistas en la ventana.
Si solo ajusta glFrustum
(por ejemplo) por sí mismo, el área de visualización en la pantalla se mantendrá igual, y usted simplemente cambiará el mapeo para que todavía llene toda el área de la ventana, y básicamente solo se mueva la cámara virtual alrededor, para acercar o alejar (etc.) en el "mundo" que se muestra. Por el contrario, si solo ajusta glViewPort
, mostrará exactamente los mismos datos, pero en un rectángulo más pequeño.
Para "recortar" los datos al rectángulo más pequeño, necesita ajustar ambos a la vez, en más o menos las direcciones "opuestas" para que el rectángulo del puerto de visualización se haga más pequeño, acerque la vista del tronco para compensar .
Lo que probablemente necesite es el mecanismo scissor de OpenGL.
It clips de representación de píxeles que no caen dentro de un rectángulo definido porx
, y
, width
y height
parámetros.
Tenga en cuenta también que este estado de OpenGL cuando está habilitado, afecta al comando glClear
al restringir el área despejada.
¿cómo se evita que todos los objetos de escena renderizados en el futuro sean recortados por ese rectángulo de recorte? En otras palabras, si solo quería aplicar ese rectángulo de recorte para los elementos secundarios de un elemento GUI pero luego quería renderizar otros objetos en la escena, ¿cómo evitaría que todos los demás objetos sean recortados por ese rectángulo? – BigSauce
No sé exactamente lo que quiere decir, pero la práctica común es separar la representación 3D de la representación de la GUI mediante el uso de FBO y pases. – Stringer
- 1. Representación Qt usando OpenGL
- 2. cómo implementar la representación en escala de grises en OpenGL?
- 3. openGL/GLSL: bloom/blur, representación en FBO
- 4. Representación de gráficos vectoriales en OpenGL?
- 5. Representación OpenGL a un elemento QML
- 6. Representación determinística de OpenGL entre el proveedor de la GPU
- 7. cómo recortar "a b c" en "abc"
- 8. OpenGL: representación fuera de pantalla rápida
- 9. Alternativas de representación del software OpenGL
- 10. Representación OpenGL en Windows XP con múltiples tarjetas de video
- 11. OpenGL: representación de más de 8 luces, ¿cómo?
- 12. cómo recortar la imagen en pedazos programáticamente
- 13. Cómo recortar la imagen analizada en android?
- 14. Representación de OpenGL ES 2.0 con una textura
- 15. Representación de flotador en C
- 16. Representación gráfica grande en C++
- 17. Representación 3D SIMPLE en C#
- 18. Gráficos de representación en C#
- 19. Problema de representación de caracteres con Freetype y OpenGL
- 20. Cómo recortar espacios en blanco entre caracteres
- 21. Cómo recortar el UIImage?
- 22. C++ 11 <thread> representación multithreads con OpenGL evita el hilo principal lee stdin
- 23. OpenGL ¿Cómo analizar la unidad?
- 24. Cómo recortar una imagen enorme
- 25. Cómo recortar la cadena de StringBuilder?
- 26. Recortar imagen en PHP
- 27. ¿Existe un límite en la cantidad de contextos de representación de OpenGL que puede crear simultáneamente?
- 28. Representación de tipado dinámico en C
- 29. ¿Cómo puedo Recortar la coma inicial en mi cadena
- 30. C++ OpenGL gluLookAt ayuda
Probablemente sea mejor describir lo que ha intentado, en todo caso, que simplemente pedir un código de ejemplo. Aquí hay un enlace al OpenGL Red Book, que es gratuito en línea y probablemente tenga información sobre lo que está buscando. http://www.glprogramming.com/red/ – Feanor
Gracias por el enlace. He jugado con glFrustum, proyecciones, etc., pero hace mucho tiempo. Me gustaría recibir un buen ejemplo simple de recorte. –