Tengo el siguiente código:¿Cómo pasar una std :: string a glShaderSource?
glShaderSource(shader, 1, (const char **)data.c_str(), NULL);
pero hace que mi caída del programa. ¿Cómo convierto std::string
en const char **
? También probé (const char **)&
pero decía "requiere l-value" que no entiendo. Funciona bien cuando se utiliza este código:
const char *data = "some code";
glShaderSource(shader, 1, &data, NULL);
Pero no puedo hacer que funcione directamente desde un std::string
. Podría asignar una nueva matriz char
pero no es un buen código.
También probé con const GLchar
pero obviamente no hace la diferencia.
Tener un vistazo a la documentación de la función. Debe haber una razón por la que toma un puntero a un puntero. Supuestamente, este es un parámetro de salida, y la función _escribe_ a 'char *' en el 'char ** desreferenciado. En ese caso, necesita pasar la dirección de un puntero real, y no de un temporal devuelto por 'std :: string :: c_str()'. – sbi
@sbi: No es un parámetro de salida, está esperando una matriz de cadenas C. –
@Benjamin: Ah, sí, me olvidé de esa posibilidad. – sbi