我有以下代碼:如何將std :: string傳遞給glShaderSource?
glShaderSource(shader, 1, (const char **)data.c_str(), NULL);
但它使我的程序崩潰。如何將std::string
轉換爲const char **
? 我也試過(const char **)&
,但它說「需要l值」,我不明白。
const char *data = "some code";
glShaderSource(shader, 1, &data, NULL);
但我不能讓它直接從std::string
工作:當我使用此代碼,它工作正常。我可以爲它分配一個新的char
數組,但那不是很好的代碼。
我也試過const GLchar
但顯然沒有區別。
看一看該函數的文檔。必須有一個原因,它需要一個指針指針。據推測,這是一個輸出參數,函數_writes_是一個'char *'給解引用的char **。在這種情況下,您需要傳遞一個實際指針的地址,而不是由'std :: string :: c_str()'返回的臨時文件。 – sbi 2011-05-18 16:12:00
@sbi:它不是一個輸出參數,它期待着一串c字符串。 – 2011-05-18 16:15:33
@Benjamin:啊,是的,我忘了這種可能性。 – sbi 2011-05-18 16:22:17