- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 (0,0) 处抽了一辆汽车,并设置了一些障碍,但现在我主要关心的是从 glPerspective 切换到 glOrtho,反之亦然。当我从透视切换到正射时,我得到的只是黑屏。
void myinit(){
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,ww/wh,1,100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(-5,5,3,backcarx,topcarx,0,0,0,1);
}
void menu(int id){
/*menu selects if you want to view it in ortho or perspective*/
if(id == 1){
glClear(GL_DEPTH_BUFFER_BIT);
glViewport(0,0,ww,wh);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2,100,-2,100,-1,1);
glMatrixMode(GL_MODELVIEW);
glutPostRedisplay();
}
if(id == 2){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,ww/wh,1,100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
viewx = backcarx - 10;
viewy = backcary - 10;
gluLookAt(viewx,viewy,viewz,backcarx,topcarx,0,0,0,1);
}
}
我试过使用清晰的深度缓冲区,但仍然不起作用。
最佳答案
你的心理障碍在于:
void myinit(){
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,ww/wh,1,100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(-5,5,3,backcarx,topcarx,0,0,0,1);
}
OpenGL 未初始化! 是的,有些操作只是偶尔执行,例如加载纹理。但总的来说,OpenGL 是一个基于状态的绘图系统。这意味着,你在使用它之前就设置了所有与绘图相关的东西。 “myinit”函数中的那段代码实际上属于显示函数。一旦你有了它,进行切换就变得微不足道了:设置一个枚举变量并根据变量的值在绘制之前设置正确的投影。
作为一般规则:OpenGL 绘图操作——以及设置转换状态属于那组操作——只属于绘图代码。因此,您的“菜单”功能根本没有意义。它是一个事件处理程序。事件处理程序处理输入,它们不生成输出。在事件处理程序中,您更改变量的值,然后标记要执行的输出。
typedef enum ProjectionType_t { Ortho, Perspective } ProjectionType;
ProjectionType projection;
void onMenu(int entry)
{
swtich(entry) {
case ...:
projection = Ortho; break;
case ...:
projection = Perspective; break;
}
glutPostRedisplay();
}
void display(void)
{
glClear(...);
glViewport(...);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
switch(projection) {
case Ortho:
glOrtho(...); break;
case Perspective:
gluPerspective(...); break;
}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
...
}
关于c - 从 glOrtho 切换到 gluPerspective,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272046/
我正在尝试从 opengles 文档中实现我自己的 glOtho 函数 http://www.khronos.org/opengles/documentation/opengles1_0/html/g
我最近开始使用 LWJGL,注意到 glOrtho 方法采用参数 left、right、bottom、top,但无法弄清楚这些参数对应的是什么。 当我注意到这一点时,我很困惑 glOrtho(1, 1
我正在尝试向我的游戏添加一些基本的 HUD,但是当我尝试更改视角时,我可以看到文本(我之前提到过 HUD),但是在黑屏上。问题出在哪里? gl.glMatrixMode(GL_PROJ
我在使用 GLM 库的 GLMDraw() 函数绘制 Google SketchUp 3D 图像的程序中使用 glOrtho 时遇到问题。我只想在投影模式下查看某些 z 值的图像,而 glOrtho(
/* OpenGL animation code goes here */ glClearColor (0.0f, 0.0f, 0.0f, 0.0f); glClear
目前我正在使用 glOrtho 来缩放和平移我正在渲染的 2D 图形。 我已将视口(viewport)设置为标准宽度和高度。然后我设置 glOrtho 以便我的平截头体使屏幕坐标与世界坐标匹配。 gl
我正在尝试使用本教程学习 LWJGL:http://www.java-gaming.org/topics/lwjgl-tutorial-series-a-simple-moving-rectangle
我正在尝试使用 LWJGL 将 ClickTeam Fusion 游戏移植到 Java。我决定简单地使用像素测量,因为这个游戏中的所有内容都是使用 PNG 文件完成的,甚至是动画(是的,确实如此)。我
鉴于我做了这样的事情: void glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLd
我创建了一个 OpenGL 应用程序,其中使用 glOrtho() 定义了一个查看体积。然后我使用 gluLookAt() 来转换所有点。问题是 - 一旦我这样做,所有点都会从裁剪平面中掉出来,因为它
我正在纹理上绘制,然后使用 GL_QUADS 将此纹理渲染到屏幕上。在屏幕上绘制纹理没有问题,但是在绘制纹理时,唯一有效果的操作是 glClear(GL_COLOR_BUFFER_BIT | GL_D
我是 OpenGl 的初学者,我在设置 glOrtho 相机以匹配窗口大小方面遇到了一些困难,以便我可以使用窗口的坐标绘制一条线。例如,如果我想从坐标 0,10 (x,y) 到 600,10 画一条线
我正在 OpenGL 中创建一个应用程序,我在其中使用 glOrtho(),原点位于左上角: glOrtho(0.0, width, height, 0.0, 0.0, 1.0); 直到我尝试渲染轮廓
我在使用 glOrtho 移动相机时遇到问题。我在中心有一个小四边形,我想尝试使用 glOrtho 移动相机,但它似乎不起作用。四边形根本不动,所以我猜相机也没有移动。也许我想念 glOrtho 的工
我需要在与 XOZ 平面平行(垂直于 OY)的平面上进行 opengl 投影。 你能解释一下我应该使用 glOrtho 进行投影的哪些参数吗? 谢谢, 最佳答案 你的问题的措辞对我来说不是很清楚,但如
我正在使用 OpenGL 创建 2D 游戏。每次我移动对象时,我都必须调用 glLoadIdentity,否则所有对象都会被移动,但是 glLoadIdentity 也会重置 glOrtho 调用,所
我在 (0,0) 处抽了一辆汽车,并设置了一些障碍,但现在我主要关心的是从 glPerspective 切换到 glOrtho,反之亦然。当我从透视切换到正射时,我得到的只是黑屏。 void myin
所以我有一个 3D 对象,我用以下光线绘制: GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 0.9}; /* White light. */ GLflo
在 OpenGL 中我可以这样做: glOrtho(-10, 10, -10, 10, -1, 1) 建立一个坐标系,其中x的范围是-10到10,y的范围是-10到10。 有没有办法在 WPF 中更改
我不知道我的函数是否做错了什么(可能是 glOrtho 的参数错误),所以结果就是错误的,或者是否一切正常。 特别是我有这种情况: 我希望绿色矩形及其所有内部内容占据窗口的所有空间,而不仅仅是窗口的一
我是一名优秀的程序员,十分优秀!