¿Cómo pasar una cadena std :: a glShaderSource?

Tengo el siguiente código

glShaderSource(shader, 1, (const char **)data.c_str(), NULL);

Pero hace que mi programa se bloquee. ¿Cómo conviertostd::string dentroconst char **? También probé(const char **)& pero decía "requiere valor l" que no entiendo. Funciona bien cuando uso este código:

const char *data = "some code";
glShaderSource(shader, 1, &data, NULL);

Pero no puedo hacer que funcione directamente desde unastd::string. Podría asignar una nuevachar array para eso, pero ese no es un buen código.

También probé conconst GLchar pero obviamente no hay diferencia.

Respuestas a la pregunta(8)

Su respuesta a la pregunta