- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我在 OpenGL ES 中生成了一个球体(具体来说,OpenGL ES 2.0,在 Java 中,适用于 Android)。当这个球体放置在与用于我的 View 矩阵的中心相同的位置时,它很好,但是当偏离中心时,球体会严重扭曲(见下文)。
为什么会发生这种情况,我该如何阻止它?
那是同一个球体。右上角的只是翻译成 x 和 y(不是 z)。
我实现 GLSurfaceView.renderer 的一些代码 fragment ,
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
GLES20.glEnable(GLES20.GL_CULL_FACE);
GLES20.glEnable(GLES20.GL_DEPTH_TEST);
// Both centred on (0,0,0), of radius 1.0.
outerSphere = new Sphere();
centreSphere = new Sphere();
}
public void onSurfaceChanged(GL10 unused, int width, int height) {
GLES20.glViewport(0, 0, width, height);
ratio = (float) width / height;
final float left = -ratio;
final float right = ratio;
final float bottom = -1.0f;
final float top = 1.0f;
final float near = 1.0f;
final float far = 100.0f;
Matrix.frustumM(projMatrix, 0, left, right, bottom, top, near, far);
}
public void onDrawFrame(GL10 unused) {
GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
float eyeX = 0.0f;
float eyeY = 0.0f;
float eyeZ = 10.0f;
final float lookX = 0.0f;
final float lookY = 0.0f;
final float lookZ = 0.0f;
final float upX = 0.0f;
final float upY = 1.0f;
final float upZ = 0.0f;
Matrix.setLookAtM(viewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ,
upX, upY, upZ);
// Set identity matrix as input for translations.
Matrix.setIdentityM(outerModelMatrix, 0);
// Translate outer sphere by 5 in x and y.
Matrix.translateM(outerModelMatrix, 0, 5.0f, 5.0f, 0.0f);
// MVP matrix = Projection * View * Model.
Matrix.multiplyMM(centreMVPMatrix, 0, viewMatrix, 0, centreModelMatrix, 0);
Matrix.multiplyMM(centreMVPMatrix, 0, projectionMatrix, 0, centreMVPMatrix, 0);
Matrix.multiplyMM(outerMVPMatrix, 0, viewMatrix, 0, outerModelMatrix, 0);
Matrix.multiplyMM(outerMVPMatrix, 0, projectionMatrix, 0, outerMVPMatrix, 0);
outerSphere.draw(outerMVPMatrix);
centreSphere.draw(outerMVPMatrix);
}
我的着色器很简单,
private final static String vertexShaderCode =
"uniform mat4 u_MVPMatrix;" +
"attribute vec4 a_Position;" +
"uniform vec4 u_Color;" +
"void main() {" +
" gl_Position = u_MVPMatrix * a_Position;" +
"}";
private final static String fragmentShaderCode =
"precision mediump float;" +
"uniform vec4 u_Color;" +
"void main() {" +
" gl_FragColor = u_Color;" +
"}";
我几乎省略了 Sphere 类的所有代码,以及其他我认为不需要的东西(?),但如果需要它们,我会把它们放上去。
最佳答案
欢迎来到 perspective distortion 的世界!
更多细节:您的视野太窄,您必须调整平截头体的形状,使其更大一些。
关于android - (OpenGL ES) 远离 View 中心的对象被拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457210/
我目前遇到一个问题,当我的手向前/向后时,我想将游戏对象移近/远离我(HoloLens 相机)。好吧,我已经正确地实现了将对象移近/移远的逻辑,但无法通过确定手的运动来解决问题。我正在使用 HoloT
我们是由少数 Delphi 开发人员组成的团队,他们多年来一直在使用 VSS(我知道这很遗憾),但我们没有使用 VCS 的任何高级功能,因此在很多情况下它都工作正常(但有些情况)有时它让我发疯:()。
我正在使用 DOT 生成如下所示的有向图。我希望所有边都有一个南尾口和一个北头口,这样所有边都从节点的底部开始并进入节点的顶部。 正如您从左侧图像中看到的那样,从节点 2 到节点 4 和节点 6 的边
在一个典型的js类中,所有对成员函数的调用都必须在this之前。我正在寻找一种技术,它可以让我创建一个相互依赖的 STATIC 函数库,并依靠闭包/作用域使事情变得更容易一些。 例子: var Sin
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
作为一个新手,IB 和所有可能的联系让我感到困惑。我发现的大多数教程都是我所说的意大利面条代码的转世,其中的纠缠是通过拖动创建的所有连接。当然,我想使用 IB 进行 View 布局(调整大小和放置视觉
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
黄点“gif1”必须进入黑框“gif”,但如您所见,我以某种方式设法做了相反的事情。 我做错了多少事? Livewave Preview 我已经尝试过 overflow:auto 或 hidden 并
我正在编写一个性能关键型应用程序,它必须在转储到磁盘之前在物理内存中存储尽可能多的数据。 我可以使用 ::GlobalMemoryStatusEx(...) 和 ::GetProcessMemoryI
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 2年前关闭。 Improve this questi
我目前正在开发使用 spring 1.2.7 的 Spring 遗留应用程序。 org.springframework spring 1.2.7 但是上面的 Artifa
尝试并搜索了很多。当父 View 的框架较小时,作为 subview 添加的按钮远离 View 。我不希望它在框架很小的时候出现。 UIView *vw = [[UIView alloc] init
我有一个游戏,其中有一个绿色圆圈在场景中的随机位置随机生成,每次点击该圆圈时,它都会改变位置,有可能会变成红色。当圆圈为红色时,我希望用户点击不是红色圆圈的屏幕空间。如何检测不在圆圈上的水龙头?我的圈
我有一个 Web 应用程序,它使用 AWS Lambda 和 API Gateway(受 IAM 保护)作为后端,前端是使用 React 构建的。我正在尝试找出将 AWS key 排除在生产 Java
我需要知道我的 div 何时在原生 javascript 中被点击。 最佳答案 要仅使用 native javascript 代码来测试被单击的元素是否是有问题的元素,您可以这样做 var handl
本着精心设计的面向对象的精神,我正在扩展的某个类已将其字段之一标记为 protected 。此类还慷慨地提供了公共(public) setter,但没有 getter。 我正在用一个基类扩展这个类,这
所以我在 OpenGL ES 中生成了一个球体(具体来说,OpenGL ES 2.0,在 Java 中,适用于 Android)。当这个球体放置在与用于我的 View 矩阵的中心相同的位置时,它很好,
我有一个应用程序,我在其中通过 WiFI 发送网络数据。一切都很好,直到我关闭显示器或设备进入“ sleep ”状态。我已经锁定了 WiFi,但是,似乎是这样的情况,即 CPU 速度在 sleep 时
我通过 exec 在 PHP 中执行一个外部命令,我获取该输出(它是一个数组),然后让各个字符串搜索特定的字符串。然后我希望将这些字符串回显到屏幕上。但是,其中一些字符串包含 XML 示例,并且它们正
我目前正在 Windows 上运行一个大型分布式 Java 系统。 从 Java 的角度来看,迁移到 Linux 有什么好处? 我能想到的一个是能够在 native 运行“服务”。目前我必须登录到 W
我是一名优秀的程序员,十分优秀!