OpenGL ES 2.0을 사용하는 Android 장치 용 앱을 개발 중이며 카메라 이동 방법을 이해하는 데 어려움이 있습니다 (궁극적으로 '화면 흔들림'효과를 생성하려고합니다. 그래서 현재 렌더링 된 모든 객체가 조화롭게 움직여야합니다.)OpenGL ES 2.0의 카메라 위치 변경
그래서 지금은 SpriteBatch
클래스를 사용하여 하나의 OpenGL 호출에서 엔티티의로드를 배치하고 모두 렌더링합니다. 이 클래스 내에서
그래서, 나는 단순히 내 개체에 대해이 클래스의 인스턴스를 생성 ..... 뭔가 같은 :
이SpriteBatch tileSet1 = new SpriteBatch(100); //100 tiles
그때 이런 식으로 렌더링합니다 : 내
tileSet1.render();
내 GLSurfaceView
클래스 (onSurfaceChanged
에서),이 같은 내보기를 설정하고있다 :
//offsetX, offsetY, width and height are all valid and previously declared)
GLES20.glViewport(offsetX, offsetY, width, height);
Matrix.orthoM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
을 그리고, 승 내 onDrawFrame()
방법을 ithin, 단순히 같은 내 모든 로직 및 렌더링 전화 :
logic();
render();
(물론, 내 게임 루프는 크게이 질문의 목적을 위해 간소화되었습니다).
나는 어디에 넣어야할지 모르겠다. Matrix.setLookAtM
.
내 'GLSufaceView'클래스에 다시 놓으려고했는데 다시 onSurfaceChanged
에 있지만 효과가없는 것 같습니다. setLookAtM
은 쉐이더와 어떻게 관련이 있습니까? 내 셰이더가 내 'SpriteBatch'클래스에 있고 그 클래스의 인스턴스에 속하기 때문에 묻습니다. (나는 이것을 완전히 오해 할 수 있습니다.)
코드가 더 필요하면 질문하고 게시하겠습니다.
올바른 방향의 포인터가 좋을 것입니다.
안녕 @RetroKoradi이 주셔서 감사합니다. SpriteBatch 루틴 내에서 말한 모든 것을 실제로 수행하고 있습니다. 그래서, 위의 내 tileSet1 예제와 같이 객체의 각 인스턴스에는 언급 한 모든 코드가 있습니다. 내 혼란은 그 클래스 (spriteBatch)의 특정 인스턴스에 대한 것입니다. 내가 알아야 할 것은 내의 SpriteBatch 클래스의 외부의 쉐이더가없는 경우 모든 *** 객체 (또는 게임 세계가 만약에 당신) 이동 *** 그래서 나는 나의 카메라를 이동 않는 방법이다. – Zippy
모든 'SpriteBatch' 인스턴스에 쉐이더 프로그램이 있습니까? 실제로 다른 쉐이더가 필요합니까? 그렇지 않으면 매우 낭비입니다. 내 질문에서 언급 한 바와 같이 –
예, 나는의 SpriteBatch의 모든 인스턴스에 쉐이더 쌍을 가지고있다. 그것에 대해 생각 후,이 갈 수있는 가장 좋은 방법이었다, 그래서 다른 배치는, 다른 변환이 필요할 수 있습니다 - 지금까지,이 모든 문제의 원인이 아니에요 (I는, 대부분에, 인스턴스의 수천을 생성하고 있지 않다에만 약 40) 만약 :-) SpriteBatch 클래스에 없었기 때문에 어디에 가장 적합할까요? 내가이 프로젝트에 남겨두면 (최소한이 프로젝트에서 그렇듯이),이 질문에서 제기 된 문제를 어떻게 해결할 수 있습니까? :-) 감사합니다 – Zippy