Java Android原生SDL glContext搞乱了图片
我正在尝试使用自定义glContext设置SDL2本机应用程序。 Java部分:默认情况下,它具有绝对布局,这是不推荐的。我想知道我是否需要使用某种SurfaceView:Java Android原生SDL glContext搞乱了图片,java,android,c++,opengl-es-2.0,sdl-2,Java,Android,C++,Opengl Es 2.0,Sdl 2,我正在尝试使用自定义glContext设置SDL2本机应用程序。 Java部分:默认情况下,它具有绝对布局,这是不推荐的。我想知道我是否需要使用某种SurfaceView: mSurface = new SDLSurface(getApplication()); mLayout = new RelativeLayout(this); mLayout.setLeft(0); mLayout.setTop(0); mLayout.addView(mSurface); setContent
mSurface = new SDLSurface(getApplication());
mLayout = new RelativeLayout(this);
mLayout.setLeft(0);
mLayout.setTop(0);
mLayout.addView(mSurface);
setContentView(mLayout);
接下来,我将在本机代码中创建opengl上下文:
SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengles2");
SDL_SetHint(SDL_HINT_RENDER_OPENGL_SHADERS, "1");
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 0 );
SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 8 );
m_glContext = SDL_GL_CreateContext(_window);
SDL_GL_MakeCurrent(_window, m_glContext);
窗口的创建方式如下:
m_mainWindow = SDL_CreateWindow("clovo", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 2048, 1536,
SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI | SDL_WINDOW_FULLSCREEN);
我认为这个案例可能是窗口大小,但创建后的大小是适合屏幕的。此外,这段代码在iOS中运行良好。
我找不到解决问题的办法。甚至找不到问题。我是Android新手,所以也许我应该知道一些关于glContext的事情
找到了问题。
当我使用自己的帧缓冲区,然后将其设置回默认值时,就会发生这种情况。
为了在渲染器初始化时不设置错误的缓冲区,我将存储默认帧缓冲区
GLint default_buffer;
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &default_buffer);
然后我可以恢复默认的缓冲区来绘制屏幕