使用我的代码,当我旋转ModelView时;它单独旋转每个对象。
我试图旋转整个视图平面。我怎么能那么做?
// prepare_scene
glViewport(0, 0, windowWidth, windowHeight);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, windowWidth, 0, windowHeight, 0, 40);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH); // Enable Smooth Shading
glClearDepth(1.0f); // Depth Buffer Setup
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
glEnable(GL_POINT_SMOOTH);
glPointSize(4);
glClearColor(0.0f, 0.0f, 0.0f, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
渲染器称为每个并图框
// render
glClearColor(0.0f, 0.0f, 0.0f, 1); // black
//glClearColor(1.0f, 1.0f, 1.0f, 1); // white
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//
// try to control the camera
// push_matrix (and at the end of render, add pop_matrix)
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glTranslatef(eye_x, eye_y, eye_z);
glRotatef(x_angular, 0, 1, 0);
// Go back to projection mode
glMatrixMode(GL_PROJECTION);
GLfloat mat_black[] = {0.0,0.0,0.0, 1.0};
// Transparent white-grey window
GLfloat mat_specular_w[] = {0.8,0.88,0.88, 1.0};
GLfloat mat_shine_w[] = {20.0};
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular_w);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_specular_w);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_specular_w);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shine_w);
// for each object in objects:
glPushMatrix();
// object "world coordinates"
// in glTranslatef(x,y,z); // z is always 0; for this test
glTranslatef( (*obj_i)->anchor[0] , (*obj_i)->anchor[1], (*obj_i)->anchor[2]);
glutWireSphere((*obj_i)->r, 15, 15);
//glutSolidSphere((*obj_i)->r, 30, 30); // (*obj_i)->r
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glFlush();
SwapBuffers(hdc);
停止在gl_projection
堆栈中添加奇怪的相机/对象。
将其保存为gl_modelview
:
// Every frame
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// do projection matrix stuff here (gluPerspective(), glOrtho(), etc.)
glOrtho(0, windowWidth, 0, windowHeight, 0, 40);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// do camera transform (gluLookAt(), etc.) here
// I'm guessing this was your camera transform(s):
glTranslatef(eye_x, eye_y, eye_z);
glRotatef(x_angular, 0, 1, 0);
// foreach object:
glPushMatrix();
{
// do whatever
glTranslatef( (*obj_i)->anchor[0] , (*obj_i)->anchor[1], (*obj_i)->anchor[2]);
...
}
glPopMatrix();
我试图创建一个第一人称相机。我从我的XNA项目中提取了一段代码,并试图将其转换为java(LWJGL)。 如果我移动鼠标,俯仰和偏航会增加/减少。在开始运行我的游戏时,它运行良好,但在一些动作后,我无法向下或向上看。如果我的位置是 性能良好的XNA代码: 所以我发现LWJGL和XNA在旋转矩阵方面有一些不同。 Java: 结果: {1.0 0.0 0.0 0 0.0}{0.0 0.3299931-
我对OpenGL有点生疏,我已经实现了一个场景的照明,场景中有小行星围绕行星旋转的实例。出于某种原因,我得到的唯一输出似乎是场景的环境照明。我无法使漫反射或镜面反射工作。 这是现场的一张照片(很难看到…)仅限环境 片段着色器代码如下所示。FragPos、Normal和TexCoords都是你所期待的。纹理_diffuse1是行星/小行星纹理,具体取决于使用的着色器。LightPos可以移动,它由图
在JavaFX中,我试图在应用程序窗口中显示旋转的ImageView。因此,我将其放入堆栈窗格中,使其始终居中,并将ImageView和堆栈窗格的宽度/高度绑定到场景的宽度/高度,以尽可能大地查看它。 只要我使用stackPane.setRotate(90)(并将绑定换成宽度/高度)将图像旋转90°,那么stackPane就不再绑定到应用程序窗口(或场景)的左上角。 如何正确放置旋转的图像? 在示
嘿,我已经开始使用JOGL了,除了使用FloatBuffer矩阵时,我的创作在y轴上被扭曲了之外,一切都很顺利。 y轴畸变图片 它应该看起来像下面的图片,但目前我不能使它这样做,而仍然被允许移动。 它应该是什么样子的图片 我看到几年前,有人有这个问题(但关于z轴),但我无法使用他们给出的更正来解决我的问题。这是链接:Link 谢谢你抽出时间
我想在x、y和z方向旋转我的模型Matix,但它以一种意想不到的方式旋转。我用Qt。 第一次旋转后,后续旋转围绕新模型矩阵的基础旋转,而我希望后续旋转围绕原点旋转。
我正在制作一个小的3D世界,现在我正在修理相机。 相机停留在世界中的固定位置,而世界可以用鼠标和键盘围绕它移动(模拟相机在世界中移动)。 以下是我的draw函数中的代码: 只要我站着不动,环顾四周,一切都很好。另一方面,当我移动时,奇怪的事情开始发生。 首先,相机的Y坐标会发生变化,但它应该固定在Y=8(这就是为什么我将场景转换为-8) 第二,当我试图在世界中移动时,向前按应该只沿着z轴移动,但你