문제

이 문제가 몇 번있었습니다. Splash-Screen 또는 OpenGL 컨텍스트에 무언가를 표시하고 싶다고 가정 해 봅시다 (또는 그 문제에 대한 Directx, 개념적 일이 더 많음), 이제 2048x2048 텍스처를로드하고 그래픽 카드가 대처할 수 있기를 바랍니다. (대부분은 내가 생각하는 대부분의 것이 될 것입니다), 그러나 구식 그래픽 카드로 자라고 있습니다. 나는이 나쁜 양심이 나를 기대고 있으며, 나는 질감을 크게 사용해서는 안된다고 말합니다.

요즘 선호하는 방법은 무엇입니까? 그 물건을 비디오 메모리에 넣거나 타일을 타거나 CPU가 작동하고 GldrawPixels를 수행하게하는 것이 있습니까? 아니면 더 정교한 것이 있습니까?

도움이 되었습니까?

해결책

이것이 애니메이션이없는 단일 프레임 스플래시 이미지라면 사용에 해를 끼치 지 않습니다. glDrawPixels. 성능이 중요하고 텍스처를 사용해야하는 경우, 올바른 방법은 프록시 텍스처를 사용하여 최대 지원 텍스처 크기 인 런타임에 결정하는 것입니다.

GLint width = 0;
while ( 0 == width ) {  /* use a better condition to prevent possible endless loop */
    glTexImage2D(GL_PROXY_TEXTURE_2D, 
                      0,                /* mip map level */
                      GL_RGBA,          /* internal format */
                      desiredWidth,     /* width of image */
                      desiredHeight,    /* height of image */
                      0,                /* texture border */
                      GL_RGBA           /* pixel data format, */ 
                      GL_UNSIGNED_BYTE, /* pixel data type */
                      NULL              /* null pointer because this a proxy texture */
    );

    /* the queried width will NOT be 0, if the texture format is supported */
    glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);

    desiredWidth /= 2; desiredHeight /= 2;
}

시스템의 OpenGL 드라이버에서 지원하는 최대 텍스처 크기를 알면 이미지가 맞지 않으면 두 가지 옵션이 있습니다.

  • 이미지 타일: 이미지를 더 작은 지원 청크로 분할 한 후 여러 쿼드를 사용하십시오. 스플래시 화면과 같은 이미지 타일링은 너무 까다로워서는 안됩니다. 당신이 사용할 수있는 glpixelstorei'에스 GL_PACK_ROW_LENGTH 더 큰 이미지의 섹션을 텍스처로로드하는 매개 변수.
  • 이미지 크기 조정: 지원되는 최대 텍스처 크기에 맞게 이미지를 크기를 조정하십시오. 당신을 위해 이것을하는 GLU 도우미 기능도 있습니다. Gluscaleimage.

다른 팁

OpenGL 기능이 내장되어 있다고 생각하지 않지만 이미지를 작은 청크로 분해하고 인쇄하여 작은 청크 (128x128 타일 또는 이와 유사한)를 스크리닝하기 위해 라이브러리를 찾을 수 있습니다.

나는 이것을 사용하는 데 문제가있었습니다 slick2d Java 게임의 경우. 아이디어를 위해 "Bigimage"수업을 확인할 수 있습니다. 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top