2017-05-07 2 views
-2

AWT 및 처리 (권장하지 않음)와 관련하여 몇 가지 문제가 있습니다. 대부분의 시간을 처리 할 수 ​​없으며 처리 루프가 작동을 멈추는 경우가 많습니다. 문제는 다양하지만 주로 나타납니다. 그래픽 매트릭스 깊이에 링크됩니다.OpenGL 상태 재설정

이 문제는 시작 조건과 관련이있는 것으로 보입니다 (시작되는 경우 나중에 실패하지 않거나 시작되지 않음). 전체 화면으로 응용 프로그램을 실행하는 비용으로도 그래픽 상태를 완전히 없앨 수있는 방법이 있는지 궁금합니다.

그래서 질문은 주로 (가능한 경우) 문법적으로 그래픽에서 새로운 시작을 어떻게 얻을 수 있습니까? 물론 다른 솔루션이나 입력은 환영하며 처리 자체에 유용 할 수 있습니다.

+0

[mcve]를 게시 할 수 있습니까? –

+0

케빈 (Kevin) 주가 진실이라고 생각합니다. 요점은 아마도 당신이하고있는 일을 할 수있는 다른 방법이있을 것이고 그 해결책은 OpenGL을 다시 설정하는 대신 그곳에서 올 수 있다는 것입니다. 중요한 포인트. AWT에서 OpenGL에 어떻게 액세스합니까? 그것은 당신 자신의 개발이거나 JOGL과 같은 다른 라이브러리를 사용하고 있습니까? Swing/AWT/JOGL에서 몇 가지 문제점을 발견했습니다. 검색 후, 적어도 MAC에 대해서는 NEWT 구현으로 해결했습니다. –

+0

지금은 N 컴포넌트를 인스턴스화하는 중입니다. 일부는 PApplet에 컴포넌트로 추가되고 일부는 draw 루프 중에 PApplet 인스턴스를 사용하여 사용자 정의 컴포넌트로 추가됩니다. 맞춤 구성 요소의 특성은 복합이므로 푸시 매트릭스 및 클립/noclips (매트릭스 스택 깊이에주의). 다음 datenWolf 리드 다음 GL GL = ((PJOGL) beginPGL()) .gl.getGL(); endPGL(); openGL 컨텍스트에 대한 . 나는 단지 그것을보고합니다. 그래픽에 관해서는 정말로 도서관 사용자 일뿐입니다. 왜 내가 처리를 선택했는지. – Yggdrasil

답변

1

OpenGL 컨텍스트를 재설정하는 방법은 없습니다. 기본 상태입니다. 그리고 이것이 있었다고해도, 이것은 여러분의 문제를 해결하지 못합니다. 왜냐하면 여러분의 코드가 끝났을 때 입력 할 때 발견 된 상태의 OpenGL 컨텍스트 뒤에 남지 않는다는 사실 때문에 문제가 발생하는 것처럼 보입니다. 확실히 기본 상태가 아닙니다.

그러나 가능한 것은 코드 대신 OpenGL 컨텍스트를 만들고 일시적으로 전환하여 자신의 일을 처리 한 다음 원래 코드로 되돌려 놓는 것입니다. Windows는 OpenGL 컨텍스트에 연결되어 있지 않으며 OpenGL 컨텍스트는 Windows에 연결되어 있지 않습니다. 원하는대로 선택하고 혼합하십시오 (픽셀 형식이 호환 가능한 경우 대부분의 창/컨텍스트 설정에 해당).

처리로 생성 한 OpenGL 개체 (텍스처, 버퍼 개체)에 액세스하려는 경우 (상태를 공유하지 않기 때문에 안전합니다) 컨텍스트 데이터를 공유 할 수 있습니다. 코드가 소유하고 있지 않은 내용을 수정하거나 완전히 삭제하지 마십시오.

JOGL/AWT를 사용하여 문제를 해결할 수 있습니다. 라이브러리 참조를 한눈에 보면 드로어 블이 현재 활성 인 OpenGL 컨텍스트에 바인딩되어 있는지 파악할 수있는 확실한 방법이 없습니다. 현재 컨텍스트를 쉽게 얻을 수 있습니다. 그러나 JOGL 자체는 오픈 소스이기 때문에 쉽게 사용할 수있는 방법이 없다면 쉽게 구현할 수 있어야합니다 (또한 라이브러리에 추가 할 가치가 있습니다).