gpt4 book ai didi

Android OpenGL ES,形状未显示在设备上,但在模拟器上工作正常?

转载 作者:行者123 更新时间:2023-12-04 10:09:33 24 4
gpt4 key购买 nike

我遵循了 android 团队的教程,展示了如何使用 OpenGL 创建简单的三角形。这是 link到教程。在安卓设备和模拟器上一切正常,直到我应用 projection .

一旦我更改字符串 顶点着色器代码 到:

private val vertexShaderCode =
"uniform mat4 uMVPMatrix;" +
"attribute vec4 vPosition;" +
"void main() {" +
" gl_Position = uMVPMatrix * vPosition;" +
"}"

我的 Android 设备上没有显示三角形,这些设备是带有 Android 6.0 (API 23) 的华为 Y2 和带有 Android 4.4.4 的索尼。知道为什么会发生这种情况,我怀疑以某种方式添加相机 View 会改变视口(viewport)外某处的三角形位置。我该如何解决?

最佳答案

我在不同的设备上遇到了类似的显示问题。您可以尝试在 frustumM() 方法中增加 'far' 的值:

Matrix.frustumM(projectionMatrix, 0, left, right, bottom, top, near, far)

增加这个参数的值为我解决了这个问题。

一般来说,对于平截头体,您可以对纵向和横向使用不同的参数值,例如:
protected val aspect = widthScreen.toFloat() / heightScreen.toFloat()
...
private fun setPerspectiveProjection() {
var left = -1.0f; var right = 1.0f
var bottom = -1.0f; var top = 1.0f
val near = 1.0f; val far = 145.0f
if (widthScreen < heightScreen) { // portrait orientation
bottom /= aspect
top /= aspect
} else { // landscape orientation
left *= aspect
right *= aspect
}
Matrix.frustumM(projectionMatrix, 0, left, right, bottom, top, near, far)
}

关于Android OpenGL ES,形状未显示在设备上,但在模拟器上工作正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61396419/

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