edit: я добавил несколько новых строк кода в начало для буферизации глубины без удачи.См. Код ..
edit 2: Я строю конструктор моделей на wxglcanvas с помощью wxwidgets.Я инициализировал WX_GL_DEPTH_SIZE из 16 и WX_GL_DOUBLEBUFFER поверх включения глубинной буферизации и glClear (GL_DEPTH_BUFFER_BIT) без удачи.Одна вещь, которая может быть полезной, чтобы отметить, - то, что, когда я рисую конус, он, кажется, рисует конус, как будто я смотрю на его внутреннюю часть, а не на внешнюю часть, поэтому он выглядит так, как будто он вогнутый.*
У меня странная проблема, когда мои модели openGL не перекрываются правильно.Я строю конструктор моделей, чтобы пользователь мог создавать и вращать модель на холсте.
Например: если у меня есть круг в рамке и я вращаю модель вокруг, я все еще могу видеть кругвнутри коробки, как будто коробка прозрачная.Я представляю, что если круг находится в рамке, я не смогу его увидеть.У кого-нибудь есть догадки о причинах такого рода проблем?Я не реализовал никакой прозрачности, поэтому я не совсем уверен, что является причиной этого.Я все еще новичок в openGL, поэтому многие мои усилия просто пробовали строки кода, которые я нашел на форумах, и надеялись, что это сработает.Кроме того, части этого кода наследуются от других программ.
Эта проблема, по-видимому, возникает только в Ubuntu, а не в Win 7, когда я тестирую свою программу после добавления двух строк кода (показано ниже).
Вот несколько строк кода для рисования моделей ...
//Newly Added code
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_GEQUAL);
glClearDepth(1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//End newly added code
glGetIntegerv(GL_MATRIX_MODE, &mm);
glMatrixMode(GL_MODELVIEW);
glLoadMatrixf(identity);
GrGetInfo();
glViewport(0,0,gw->gc.width,gw->gc.height);
GrGetInfo();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// Set some predefined parameters
glOrtho ((GLdouble)tmpOtherAxis.minval, (GLdouble)tmpOtherAxis.maxval,
(GLdouble)tmpRangeAxis.minval, (GLdouble)tmpRangeAxis.maxval,
-range_dist, range_dist);
glMatrixMode(mm);
//ADDED THESE TWO LINES AND MODEL DISPLAYED
//CORRECTLY IN WIN7 BUT NOT UBUNTU
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
//Draw model here
glPopMatrix();
Любая помощь будет принята с благодарностью, и не стесняйтесь задавать мне любые вопросы, касающиеся вас.