2011-06-01 19 views
5

Parece que glTexSubImage2D requiere un puntero al buffer de textura completo. ¿Cómo se hacen actualizaciones parciales a una textura al solo proporcionar un puntero a la región de actualización en lugar de a la memoria intermedia completa?¿Cómo actualizo parte de una textura?

Por ejemplo, si quiero superponer una segunda imagen a una textura existente, en lugar de copiar los datos de la imagen en el búfer de textura, llamo a glTexSubImage2D, obtengo OpenGL para actualizar la textura sin tener que copiar datos entre las ubicaciones de RAM.

Respuesta

7

¿De dónde saca la noción de que glTexSubImage2D requiere un puntero al buffer de textura completo?

De la documentación vinculada anteriormente, me parece que el último parámetro es un puntero al búfer que contiene sus nuevos datos solamente. Los otros parámetros son los que usa para especificar qué objeto de textura actualizar (solo un identificador OpenGL, sin puntero a los datos originales requeridos) y el desplazamiento y el tamaño para copiar sus datos nuevos.

TL; DR: glTexSubImage2D toma un puntero a sus nuevos datos y hace exactamente lo que usted piensa que debería en su ejemplo :)

+0

Gracias por su respuesta. De hecho, descubrí que mi problema era que estaba haciendo la actualización de la textura en un hilo separado que estaba causando problemas. Tratando de averiguar cómo pasar eso ahora ... ¡Gracias de nuevo! – gamedynamix

+0

¡De nada! Con respecto a OpenGL y multihilo, esta pregunta puede ayudar: http://stackoverflow.com/questions/4567296/opengl-and-threading –

Cuestiones relacionadas