2016-11-17 9 views
1

WebGL 및 Xvfb를 사용하여 큰 이미지를 생성하려고합니다.메사 드라이버의 GL_MAX_TEXTURE_SIZE를 늘리는 방법은 무엇입니까?

WebGL 캔버스 크기가 최대 8192x8192px 일 때 - 훌륭하게 작동하며 이미지가 나타납니다.
WebGL 캔버스 크기가 8192x8192px보다 큰 경우 이미지가 생성되지 않습니다.

스크립트는 디지털 바다 VPS에서 Ubuntu 14.04의 Mesa 드라이버 10.1.3을 사용하여 Xvfb 디스플레이에서 실행됩니다.

GL_MAX_TEXTURE_SIZE 한도 (8192)를 초과하여 큰 이미지를 얻을 수 없다고 생각합니다. this limit was raised to 16k in Mesa 7.10처럼 보이지만 왜 메사 10.1.3과 함께 나에게 아직 8k인지 모르겠다.

GL_MAX_TEXTURE_SIZE를 8192에서 16384로 올리려면 어떻게해야합니까? 여기

몇 가지 추가 정보입니다 :

여기
$> nohup Xvfb :99 -ac -screen 0 10000x10000x24 & 

$> DISPLAY=:99 glxinfo -l | grep GL_MAX_TEXTURE_SIZE 
GL_MAX_TEXTURE_SIZE = 8192 

$> DISPLAY=:99 glxinfo -l | grep Mesa 
OpenGL version string: 2.1 Mesa 10.1.3 

내가 설치 한 몇 가지 패키지입니다 :

$> apt list --installed | grep mesa 
libgl1-mesa-dev/trusty-updates,now 10.1.3-0ubuntu0.6 amd64 [installed] 
libgl1-mesa-dri/trusty-updates,now 10.1.3-0ubuntu0.6 amd64 [installed] 
libgl1-mesa-glx/trusty-updates,now 10.1.3-0ubuntu0.6 amd64 [installed,automatic] 
libglapi-mesa/trusty-updates,now 10.1.3-0ubuntu0.6 amd64 [installed,automatic] 
libglu1-mesa/trusty,now 9.0.0-2 amd64 [installed,automatic] 
libglu1-mesa-dev/trusty,now 9.0.0-2 amd64 [installed] 
mesa-common-dev/trusty-updates,now 10.1.3-0ubuntu0.6 amd64 [installed,automatic] 
mesa-utils/trusty,now 8.1.0-2 amd64 [installed] 

$> apt list --installed | grep gl 
gir1.2-glib-2.0/trusty-updates,now 1.40.0-1ubuntu0.2 amd64 [installed] 
libclass-singleton-perl/trusty,now 1.4-1 all [installed,automatic] 
libdbus-glib-1-2/trusty,now 0.100.2-1 amd64 [installed] 
libgl1-mesa-dev/trusty-updates,now 10.1.3-0ubuntu0.6 amd64 [installed] 
libgl1-mesa-dri/trusty-updates,now 10.1.3-0ubuntu0.6 amd64 [installed] 
libgl1-mesa-glx/trusty-updates,now 10.1.3-0ubuntu0.6 amd64 [installed,automatic] 
libglapi-mesa/trusty-updates,now 10.1.3-0ubuntu0.6 amd64 [installed,automatic] 
libglew-dev/trusty,now 1.10.0-3 amd64 [installed] 
libglew1.10/trusty,now 1.10.0-3 amd64 [installed,automatic] 
libglib2.0-0/trusty-updates,now 2.40.2-0ubuntu1 amd64 [installed] 
libglib2.0-data/trusty-updates,now 2.40.2-0ubuntu1 all [installed] 
libglu1-mesa/trusty,now 9.0.0-2 amd64 [installed,automatic] 
libglu1-mesa-dev/trusty,now 9.0.0-2 amd64 [installed] 
libxcb-glx0/trusty,now 1.10-2ubuntu1 amd64 [installed,automatic] 
libxcb-glx0-dev/trusty,now 1.10-2ubuntu1 amd64 [installed,automatic] 
node-glob/trusty,now 3.2.6-1 all [installed,automatic] 
x11proto-gl-dev/trusty,now 1.4.17-1 all [installed,automatic] 

내가 출력 빨간색 사각형 PNG로 pngjs와 함께 headless-gl에서 예제 스크립트를 실행하고는 :

// test.js 

var PNG = require('pngjs').PNG 
//Create context 
var width = 64 
var height = 64 
var gl = require('gl')(width, height, { preserveDrawingBuffer: true }) 

//Clear screen to red 
gl.clearColor(1, 0, 0, 1) 
gl.clear(gl.COLOR_BUFFER_BIT) 

function glToPNGStream(gl) { 
    const png = new PNG({ width, height }) 

    let a 
    let b 
    let g 
    let k 
    let m 
    let r 
    const pixels = new Uint8Array(4 * width * height) 
    gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels) 
    for (let j = 0; j < height; j++) { 
    for (let i = 0; i < width; i++) { 
     k = j * width + i 
     r = pixels[4 * k] 
     g = pixels[4 * k + 1] 
     b = pixels[4 * k + 2] 
     a = pixels[4 * k + 3] 
     m = (height - j + 1) * width + i 
     png.data[4 * m] = r 
     png.data[4 * m + 1] = g 
     png.data[4 * m + 2] = b 
     png.data[4 * m + 3] = a 
    } 
    } 
    return png.pack() 
} 

glToPNGStream(gl).pipe(process.stdout) 
+0

설치된 GPU가 큰 텍스처를 지원하지 않는다고 생각됩니다. –

답변

0

소프트웨어 구현이 아니라면 구현의 최대 텍스처 크기를 늘릴 수 없습니다. 하드웨어가 허용하는 것으로 정의되는 하드웨어 OpenGL 구현의 경우 변경되지 않습니다.

메사의 소프트웨어 OpenGL 래스터 라이저에 대한 이야기가 증가하고 있습니다. 하드웨어 드라이버의 경우 GPU가 제공하는 것을 사용합니다.