저는 현재 Replica Island에서 영감을 얻은 디자인을 사용하여 Android에서 게임을 작성하고 있습니다. 즉, 이중 스레드 방식, 하나의 논리 스레드 및 하나의 렌더링 스레드입니다.Android 동시 렌더러 디자인
나는 경량 스레드가 로직 스레드에 앉아서 렌더링 할 수있는 게임 개체를 처리 할 수 있도록 설정했다. "render sprite f at x, y"와 같이 렌더링 스레드에 렌더링 명령을 보냅니다.
저는이 디자인이 마음에 들지만 현재 나를위한 문제는 리소스 생성에 있습니다. sprite f가 텍스처를 필요로한다고 말하면,로드시 로직 쓰레드에서 요청할 것입니다. 문제는 OpenGL 컨텍스트가 렌더링 스레드에 있기 때문에 렌더러 스레드에서만 텍스처를 생성 할 수 있다는 것입니다. 현재 논리 스레드와 렌더 스레드 사이의 유일한 동기 포인트는 프레임의 끝에서 렌더링 대기열을 교환 할 때이며, 나는 그런 식으로 유지하고 싶습니다.
렌더링 스레드에서 렌더링하는 동안 논리 스레드에서 텍스처를 만들려는 문제, vbo 's 등을 어떻게 해결할 수 있습니까? OpenGL 컨텍스트를 공유하는 것이 좋은 방법일까요? 아니면 엔진의 다른 디자인일까요?
편집 : 하나의 대안은 논리 스레드의 요청을 넣을 다른 큐를 갖는 것입니다. "텍스쳐 생성"과 같습니다. 렌더링 쓰레드는 다른 큐를 렌더링하기 전에이 큐를 반복 처리합니다. 나는이 해결책을 좋아하기 시작했다.