Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio上的setEGLContextClientVersion(3)导致错误_Java_Android_Android Studio_Opengl Es - Fatal编程技术网

Java Android Studio上的setEGLContextClientVersion(3)导致错误

Java Android Studio上的setEGLContextClientVersion(3)导致错误,java,android,android-studio,opengl-es,Java,Android,Android Studio,Opengl Es,我一直在使用Android Studio 2.1.3和Java开发工具包1.8.0以及API 24(Android 7.0 Nougat)上的SDK版本来跟踪Android OpenGL,我无法通过setEGLContextClientVersion(3)将OpenGL ES上下文设置为3.0 这样做会产生以下结果: 09-01 11:02:46.5266822-6839/?E/AndroidRuntime:致命异常: GL149 进程:com.example.opengl,PID:6822 j

我一直在使用Android Studio 2.1.3和Java开发工具包1.8.0以及API 24(Android 7.0 Nougat)上的SDK版本来跟踪Android OpenGL,我无法通过
setEGLContextClientVersion(3)
将OpenGL ES上下文设置为3.0

这样做会产生以下结果:

09-01 11:02:46.5266822-6839/?E/AndroidRuntime:致命异常: GL149 进程:com.example.opengl,PID:6822 java.lang.IllegalArgumentException:eglChooseConfig失败 在android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:852) 位于android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1023) 位于android.opengl.GLSurfaceView$GLThread.guarderun(GLSurfaceView.java:1400) 位于android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)

使用
setEGLContextClientVersion(2)
可以完美地工作,并显示所需的形状。在尝试
setEGLContextClientVersion(3)
时,我已尝试在
Triangle
Square.java
文件中调整着色器以匹配
3.0
,但没有效果

我还尝试使用
setEGLConfigChooser(8,8,8,8,16,4)
来解决类似的错误

我还尝试重新启动Android Studio和我的模拟器,它们是Android TV(1080p)API 24、Android TV(1080p)API 22和Galaxy Nexus API 22

下面是我的
MyGLSurfaceView.java
code-同样,如果我将
setEGLContextClientVersion(3)
调整为
(2)
,一切都会按预期运行

package com.example.opengl;

import android.content.Context;
import android.opengl.GLSurfaceView;
import android.view.MotionEvent;

class MyGLSurfaceView extends GLSurfaceView {

private final MyGLRenderer mRenderer;

public MyGLSurfaceView(Context context) {
    super(context);

    //Create an OpenGL ES # context
    setEGLContextClientVersion(3);
    setEGLConfigChooser(8 , 8, 8, 8, 16, 4);

    mRenderer = new MyGLRenderer();
    setRenderer(mRenderer);
}

private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
private float mPreviousX;
private float mPreviousY;

@Override
public boolean onTouchEvent(MotionEvent e){
    //MotionEvent reports input details from the touch screen
    // and other input controls. In this case, you are only
    // interested in events where the touch position changed.

    float x = e.getX();
    float y = e.getY();

    switch(e.getAction()) {
        case MotionEvent.ACTION_MOVE:

            float dx = x - mPreviousX;
            float dy = y - mPreviousY;

            //reverse direction of rotation above the mid-line
            if(y > getHeight()/2) {
                dx = dx * -1;
            }

            //reverse direction of rotation to left of the mid-lin
            if(x<getWidth()/2) {
                dy=dy * -1;
            }

            mRenderer.setAngle(mRenderer.getAngle()+((dx+dy)*TOUCH_SCALE_FACTOR)); // = 180.0f / 320
            requestRender();
    }

    mPreviousX = x;
    mPreviousY = y;
    return true;
    }
}
package com.example.opengl;
导入android.content.Context;
导入android.opengl.GLSurfaceView;
导入android.view.MotionEvent;
类MyGLSurfaceView扩展了GLSurfaceView{
私人终审法院;
公共MyGLSurfaceView(上下文){
超级(上下文);
//创建OpenGL ES#上下文
setEGLContextClientVersion(3);
setEGLConfigChooser(8,8,8,8,16,4);
mrender=新的MyGLRenderer();
setRenderer(mRenderer);
}
私人最终浮动接触比例系数=180.0f/320;
私人浮动MPX;
私家车;
@凌驾
公共事件(运动事件e){
//MotionEvent从触摸屏报告输入详细信息
//和其他输入控件。在这种情况下,您仅
//对触摸位置改变的事件感兴趣。
float x=e.getX();
float y=e.getY();
开关(如getAction()){
case MotionEvent.ACTION\u移动:
浮点数dx=x—mPreviousX;
浮动dy=y-mPreviousY;
//中线以上的反向旋转方向
如果(y>getHeight()/2){
dx=dx*-1;
}
//将旋转方向反转到中间lin的左侧

如果(x有时,您正在开发或运行应用程序的手机不支持OpenGLES版本3。检查这一点的方法是,首先使用OpenGLES 2,看看是否有错误。如果它工作正常,则意味着您的手机不支持OpenGLES 3

我想是这样的,所以我尝试了多个模拟器,al我认为其中的1个应该是3个兼容的,它们都表现出与您尝试过的模拟器相同的行为…同时请检查这个问题我使用的是Android TV(1080p)API 24,Android TV(1080p)API 22和Galaxy Nexus API 22。根据图形开发人员指南,我认为API 18+支持OpenGLES3:。从所附的链接来看,模拟器可能不够:(。感谢我能理解的要点!