2016-11-17 11 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] 

私はpngjsと組み合わせるheadless-glからの出力に赤い四角PNGをサンプルスクリプトを実行しています:

// 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が提供するものを使用します。

関連する問題