gpt4 book ai didi

c++ - QGLWidget 不显示对象如图所示

转载 作者:行者123 更新时间:2023-11-28 06:52:34 26 4
gpt4 key购买 nike

我正在 Qt 中制作一个 GUIon,我正在使用 QGLWidgt 来显示对象的运动。为了调试目的,我在矩阵上进行了硬编码以尝试显示茶壶,但屏幕上没有显示任何内容。我尝试了很多东西,我只是不知道出了什么问题。

编辑我发现它显示的是茶壶,但缩放比例很远。如果我改变位置,它就会远离原来的位置。当我将位置从 -2.700、2.000、0.000 更改为 -0.0270、0.0200、0.000 时,我可以看到它。我想我现在的问题是如何设置屏幕大小以显示正在显示的内容??

下面给出了 paintGL、residGL 和 intializeGL。

void GLWidget::initializeGL()

{
glClearColor(1.0,1.0,1.0,1.0);
GLUquadricObj *qobj = gluNewQuadric();
gluQuadricDrawStyle(qobj,GLU_FILL);
gluQuadricNormals(qobj,GLU_SMOOTH);
glClearDepth( 1.0f );

glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
double eqn[] = {0.01f,0.0f,0.01f,-1.0f};
// enable clip plane
::glClipPlane(GL_CLIP_PLANE0,eqn);

setupLight();
}

void GLWidget::paintGL() {

double MOpenGLStack[16] = {0.4314, 0.875, 0.2181, 0.000,
0.0567, -0.267, 0.961, 0.000,
0.900, -0.402, -0.165, 0.000,
-2.700, 2.000, 0.000, 1.000};

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0, 0.0, -5.0);
glRotatef(xRot / 16.0, 1.0, 0.0, 0.0);
glRotatef(yRot / 16.0, 0.0, 1.0, 0.0);
glRotatef(zRot / 16.0, 0.0, 0.0, 1.0);
glTranslated(xTrans / 16.0, yTrans/ 16.0, 0.0f);
::glPushMatrix();
::glMultMatrixd(MOpenGLStack);
glutSolidTeapot(0.15);
::glPopMatrix();
}


void GLWidget::resizeGL(int w, int h){

int side = qMin(w, h);
glViewport((w - side) / 2, (h - side) / 2, side, side);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30.0f, (double)w/(double)h, 0.1f, 1000.0f);
glOrtho(-0.5, +0.5, -0.5, +0.5, 4.0, 15.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity ();
glTranslatef(0.0f, 0.0f, -10.0f);
}

最佳答案

这里有个问题:

 gluPerspective(30.0f, (double)w/(double)h, 0.1f, 1000.0f);
glOrtho(-0.5, +0.5, -0.5, +0.5, 4.0, 15.0);

第一行被第二行覆盖——你不能同时拥有透视图和正交 View 。如果你不想在平行 View 中查看茶壶,你可以在第二行注释。

关于c++ - QGLWidget 不显示对象如图所示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23665467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com