2017-02-12 6 views
1

화면에 큰 (예 : 800 x 600) 색상 값 테이블을 인쇄하는 효과적인 방법이 있습니까? 많은 사각형을 만드는 것 (끔찍하게 느림)이나 imageData를 만들고 그리기 (테이블 값이 모든 프레임에서 변경되지 않았 더라면 괜찮을 것입니다.하지만 그렇게하는 등)를 시도했습니다. 감사!Love2d 테이블에서 그립니다.

답변

1

(많은) 추가 데이터없이 값을 계산할 수있는 경우 셰이더를 작성하고 상황을 그릴 때 계산할 수 있습니다.

그래도 문제가 해결되지 않으면 ImageData를 사용하는 것이 일반적으로 훨씬 빠릅니다. 먼저 프레임 당 g = love.graphics.newImage(image_data)을 호출하지 말고 한 번만 생성 한 다음 g:refresh() 만 호출하면됩니다.

다음은 :mapPixel이 C에서 루아로 끊임없이 전화를 걸기 때문에 (실제로는 픽셀 당 1 회) 오버 헤드가 상당히 느리기 때문입니다. 루아에서 더 빨리 재 작성하거나 :setPixel (보통은 :getPixel)의 일반 루프를 사용하는 것이 빠릅니다.

여전히 느린 경우 마지막 문제는 다음과 같습니다. LuaJIT는 일반 Lua API를 통해 제공되는 C 함수에 대한 호출을 JIT 컴파일 할 수 없습니다. 그러나 이들을 ffi를 통해 데이터 구조를 설명하고 LuaJIT가 직접 액세스하도록하면 대체 할 수 있습니다. 점액질은 사랑에 대해 이것을했습니다 - 0.9 (code on github). 그냥 require 그 파일과 그것은 느린 기능을 대체하고, 모든 것이 훨씬 빨라야합니다. 나는 100 % 확실하지는 않지만 나는 이것을 현재 버전 (0.10)에 이미 사용했다고 생각하며 아직도 작동한다. (ImageData의 내부 형식이 변경되면 중단되지만 상대적으로 쉽게 수정해야합니다. 다른 사람이 코드를 업데이트하고 어딘가에 게시 할 가능성이 있습니다.