-2
Ich versuche, eine Kamera für ein fps ähnliches Projekt zu implementieren, und ich habe Probleme, wenn ich meine Camera-Klasse auf der main.cpp beim Aufruf der glMatrixMode(GL_MODELVIEW)
.glMatrixMode (GL_MODELVIEW) benutze Segmentierungsfehler
Hier sind die entsprechenden Funktionen:
void Camera::init() {
m_yaw = 0.0;
m_pitch = 0.0;
set_pos(0,0,0);
}
void Camera::set_pos(float x, float y, float z) {
m_x = x;
m_y = y;
m_z = z;
refresh();
}
void Camera::refresh() {
m_lx = cos(m_yaw) * cos(m_pitch);
m_ly = sin(m_pitch);
m_lz = sin(m_yaw) * cos(m_pitch);
m_strafe_lx = cos(m_yaw - M_PI_2);
m_strafe_lz = sin(m_yaw - M_PI_2);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
printf("the segmentation fault is above!\n");
gluLookAt(m_x, m_y, m_z, m_x + m_lx, m_y + m_ly, m_z + m_lz, 0.0, 1.0, 0.0);
//printf("Camera: %f %f %f Direction vector: %f %f %f\n", m_x, m_y, m_z, m_lx, m_ly, m_lz);
}
Haben Sie einen OpenGL-Kontext, wenn Sie dies ausführen? Bitte erstellen Sie ein [mcve]. –
@ColonThirtyTwo: Auch ohne GL Kontext sollte dies nicht segfault sein. Höchstwahrscheinlich gibt es ein Out-of-Bounds Schreiben irgendwo anders in dem Programm korrumpierenden Runtime Housekeeping Strukturen und der Aufruf von GlLoadIdentity löst den Kollaps aus. Hier bekommt man einen Speicher-Debugger wie Valgrind. – datenwolf