No puedo entender cómo usar un objeto de búfer de vértice para mi terreno en opengl es 2.0 para iphone. Son datos estáticos así que estoy esperando un aumento de velocidad usando VBO. En OpenGL regular, uso listas de visualización junto con sombreadores no hay problema. Sin embargo, en OpenGL es 2.0 tengo que enviar los datos de los vértices al sombreador como un atributo y no sé cómo funciona esto con el VBO. ¿Cómo puede el buffer de vértices saber qué atributo tiene para vincular los datos de vértice cuando se llama? ¿Esto es posible incluso en OpenGL es 2.0? Si no, ¿hay otras maneras en que pueda optimizar la representación de mi terreno que es estático?OpenGL ES 2.0 y objetos de búfer de vértice (VBO)
8
A
Respuesta
12
Claro, esto es bastante simple en realidad, su atributo tiene una ubicación y datos de vértice se alimenta con glVertexAttribPointer de llanura Vertex Arrays, así:
float *vertices = ...;
int loc = glGetAttribLocation(program, "position");
glVertexAttribPointer(loc, 3, GL_FLOAT, GL_FALSE, 0, vertices);
Para OISCIV, que es lo mismo, pero tienes para unir el búfer al objetivo GL_ARRAY_BUFFER, y el último parámetro de glVertexAttribPointer ahora es un desplazamiento en el almacenamiento de la memoria intermedia. El valor del puntero en sí es interpretado como un desplazamiento:
glBindBuffer(GL_ARRAY_BUFFER, buffer);
int loc = glGetAttribLocation(program, "position");
glVertexAttribPointer(loc, 3, GL_FLOAT, GL_FALSE, 0, 0);
En este caso, el desplazamiento es 0, suponiendo que los datos de vértice se carga al comienzo de la memoria intermedia. El desplazamiento es medidas en bytes.
El dibujo se realiza con glDrawArrays/glDrawElements. ¡Espero que esto ayude!
Cuestiones relacionadas
- 1. Dibujo de textura rápida OpenGL con objetos de búfer de vértice. ¿Es esta la manera de hacerlo?
- 2. OpenGL es 2.0 Búfer de profundidad de lectura
- 3. Aspectos técnicos de OpenGl VBO en C++
- 4. Datos de actualización de OpenGL VBO
- 5. basic openGL, buffers de vértice y pyglet
- 6. ¿Qué son los objetos de matrices vértice?
- 7. OpenGL confusión búfer de vértices
- 8. OpenGL 3.x: infracción de acceso al usar el objeto de búfer de vértice y glDrawElements (...)
- 9. Mejores prácticas de OpenGL ES 2.0 Shader
- 10. Almacenar diferentes atributos de vértice en diferentes VBO
- 11. Trazado de recorte en OpenGL ES 2.0
- 12. Estructura OpenGL de VAO/VBO para modelo con piezas móviles?
- 13. OpenGL: Dibujar líneas con VBO
- 14. Elija OpenGL ES 1.1 u OpenGL ES 2.0?
- 15. OpenGL ES 2.0 equivalente de glOrtho()?
- 16. Problema al usar el VBO de OpenGL
- 17. Diferencia entre OpenGL ES 2.0 y OpenGL 4
- 18. Transición de OpenGL ES 1.1 a OpenGL ES 2.0
- 19. OpenGL ES 2.0 Algoritmos de transformación de vértices
- 20. ¿Qué sucede si no elimino un Objeto de búfer de vértice cuando mi programa se cierra?
- 21. Android OpenGL ES 2.0 emulador
- 22. OpenGL es mejor dibujar por lotes o tener VBO estáticas
- 23. Cuestiones de la cámara OpenGL ES 2.0
- 24. Representación de OpenGL ES 2.0 con una textura
- 25. Solución para escribir el valor del búfer de profundidad/profundidad en OpenGL ES 2.0
- 26. ¿Cómo manipulo objetos independientemente uno del otro en OpenGL ES 2.0?
- 27. ¿Es posible que un atributo de vértice sea una matriz en GLSL-ES 2.0?
- 28. Objeto de búfer OpenGL Vertex, ¿puedo acceder a los datos de vértice para otros usos, como la detección de colisión?
- 29. OpenGL-ES y Cg
- 30. OpenGL ES 2.0 múltiples mallas? (solo ejemplos del mundo real)
Sí, esto debería hacer lo que necesito. Lo intentaré mañana. ¡Gracias! – Nitrex88
Me ayudaría si pudiera encontrar qué hacer con 'vértices' en el segundo ejemplo. ¿Una idea? –
@Stephane vertices deben cargarse en una VBO usando glBufferData. –