glShaderSource ขัดข้อง
Aug 30 2020
ฉันใช้:
std::string source;
char value;
std::ifstream stream(paths[id]);
while (stream.get(value)) {
source += value;
}
stream.close()
int shader = glCreateShader(mode);
shaders[id] = shader;
glShaderSource(shader, 1, (const GLchar* const *)source.c_str(), nullptr);
glCompileShader(shader);
และแอปขัดข้องในตัวแปรต้นทางยังประกอบด้วย:
#version 330 core
layout(location = 0) in vec3 aPos;
void main()
{
gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);
}
และแอพก็ล่ม!
ปัญหาคืออะไร?
คำตอบ
4 HolyBlackCat Aug 30 2020 at 09:53
ปัญหาอยู่ที่นี่: (const GLchar* const *)source.c_str(). ความจริงที่ว่ามันไม่ได้ผลหากไม่มีนักแสดง (a reinterpret_cast) เป็นสัญญาณว่าคุณกำลังทำอะไรผิดพลาด
บันทึกตัวชี้ไปยังตัวแปร: const char *ptr = source.c_str();แล้วผ่านไป&ptrglShaderSource
2 Spinkoo Aug 30 2020 at 09:55
ปัญหาอยู่ในนี้
glShaderSource(shader, 1, (const GLchar* const *)source.c_str(), nullptr);
ลองทำสิ่งนี้
const char* src = source.c_str();
glShaderSource(shader, 1, &src,nullptr);