#c
Вопрос:
Я использовал iostream для чтения bmp-файла. Однако при запуске общей библиотеки возникает «__gnu_cxx::recursive_init_error», но не последовательно. Комментирование glClear действительно устраняет проблему (или комментирование #include lt;iostreamgt; или всех других команд рисования opengl), но я предпочел бы сохранить это. Я несколько сократил свой код, чтобы воспроизвести проблему так же, как это было обычно. Я думаю, что это может быть 2 потока, борющихся за один и тот же регистр, но я не слишком уверен, и, вероятно, в любом случае это проще.
#include lt;cmathgt; #include "GL/freeglut.h" #include "GL/glut.h" #include lt;iostreamgt; void displayCallback(); void initBegin() { glClearColor(0.0,0.0,0.0,1.0); glColor3f(1.0, 1.0, 1.0); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-0.1, 0.1, -0.1, 0.1, 0.1, 100); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0, 0, -3); } int pos[3] = {0000,0000,-3000};//thousandths int rot[2] = {0,0};//attitude,asmith int rotcapattitude = 90; int wasd[2] = {0,0};// fb,lr int width, height, nrChannels; float borderColor[] = { 1.0f, 1.0f, 0.0f, 1.0f }; bool mousecapture = false; int main(int argc,char **argv) { glutInit(amp;argc,argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutInitWindowSize(500,500); glutCreateWindow("templete"); glutDisplayFunc(displayCallback); glutIgnoreKeyRepeat(1); initBegin(); glutMainLoop(); return 0; } void displayCallback() { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glRotatef(rot[0],1,0,0); glRotatef(rot[1],0,1,0); glTranslatef(static_castlt;floatgt;(pos[0])/1000,static_castlt;floatgt;(pos[1])/1000,static_castlt;floatgt;(pos[2])/1000); glutSwapBuffers(); }