作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经用 OpenGL 为我的 Android 应用程序构建了一个非常漂亮的魔方。不幸的是,当我把它靠近相机时,它看起来有点拉伸(stretch)。它看起来像这样:
我希望我的立方体尽可能大,但不要拉伸(stretch)。
这里有一些代码:
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
float z = 3;
float x = 0;
float y = 3;
GLU.gluLookAt(gl, x, y, z, 0, 0, 0, 0, 1, 0);
我尝试使用 GLU.gluPerspective() 但没有成功。
编辑:这是我的渲染器类的更多代码:
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glDisable(GL10.GL_DITHER);
gl.glClearColor(0, 0, 0, 0);
gl.glShadeModel(GL10.GL_SMOOTH);
gl.glClearDepthf(1f);
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glDepthFunc(GL10.GL_LEQUAL);
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
}
@Override
public void onDrawFrame(GL10 gl) {
gl.glDisable(GL10.GL_DITHER);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
float z = 3;
float x = 0;
float y = 3;
GLU.gluLookAt(gl, x, y, z, 0, 0, 0, 0, 1, 0);
gl.glRotatef(angleX, 1, 0, 0); //This is the rotation if surface is touched
gl.glRotatef(angleY, 0, 1, 0);
f.draw(gl); //drawing the pieces of the cube
r.draw(gl);
l.draw(gl);
u.draw(gl);
d.draw(gl);
b.draw(gl);
for (int i = 0; i < corners.length; i++) {
corners[i].draw(gl);
}
for (int i = 0; i < edges.length; i++) {
edges[i].draw(gl);
}
display(); //this has nothing to do with opengl
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
float ratio = (float) width / height;
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glFrustumf(-ratio, ratio, -1, 1, 1, 25);
}
最佳答案
相机距离物体太近。尝试将相机向后移动一点,并将近平面向后移动一点。 (glFrustumf
的第 5 个参数)。
关于java - 近距离的物体看起来被拉伸(stretch)/改变消失点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124618/
我复制了 YouTube 的一段代码,关于在 Python 中在屏幕上显示 3d 立方体,而不使用外部模块(如 PyOpenGL)。它工作得很好,但是当你进入两个立方体之间时,显示就会变得困惑。这是我
我正在寻找一种好的算法来查找最近位置列表,同时考虑到我们从 GPS 设备接收的数据质量。 问题如下: 我的位置是A。 A=(LNG、LAT、ALT、HorizontalAccuracy、Verti
我是一名优秀的程序员,十分优秀!