2012-07-17 4 views
2

Java에서 다음 작업을 수행 할 수 있는지 알고 싶습니다. LWJGL 래퍼를 사용하는 Java 기반 OpenGL 응용 프로그램에서 작업하고 있습니다. 각 프레임의 렌더링 루프에서 렌더링 완료 픽셀을 저장 중입니다. 문제는 프레임의 크기가 꽤 크고 렌더링 루프의 다음 시작까지 픽셀을 파일에 쓸 때 눈에 띄는 오버 헤드가 발생한다는 것입니다. 어떻게 생각합니까? 다음과 같습니다.OpenGL 응용 프로그램의 Java 스레드

  1. 프레임 렌더링 완료시 프레임 버퍼에서 픽셀을 읽습니다.
  2. 이미지 파일 작성을 담당하는 클래스에서 새 스레드를 시작하십시오.

그런 기술이 도움이 될지 궁금한가요? 별도의 스레드에서 이미지 파일 저장을 기다리지 않고 다음 렌더링 루프가 시작됩니까? 스레드를 사용하여 실행 가능합니까? 내가 원하는 것은 GL 렌더 루프가 파일 쓰기를 기다리지 않고 각 렌더 루프의 끝에서 새로운 픽셀 데이터를 파일 쓰기 객체로 가져 오는 동안 렌더링을 계속 진행해야한다는 것입니다.

답변

3

실행중인 개별 스레드를 실행하려면 다음과 같이 스레드 클래스를 작성하십시오. 는 관계없이 WritePixelsToImageThread에서 작업을 계속 루프를 렌더링 일으킬 것이다

new WritePixelsToImageThread().start(); 
+0

로 스레드를 시작한 후

public class WritePixelsToImageThread extends Thread { public void run(){ // place your code here for // read pixels from Frame and write that image. // this is an individual process } } 

? –

+0

예 루프에이 코드를 추가합니다. 새 WritePixelsToImageThread(). start(); run 메서드에서 작업을 수행 할 새 스레드가 시작됩니다. – NPKR

+0

동기화는 어떻게됩니까? 다음 루프에서 WritePixelsToImageThread에 새 픽셀을 가져 오는 경우에도 마지막 프레임 저장이 완료되지 않았습니까? 아니면 각 이미지 저장을 위해 새 스레드를 만들어야합니까? –

관련 문제