Opengl es 如何为mesa驱动程序增加GL_MAX_纹理_大小?

Opengl es 如何为mesa驱动程序增加GL_MAX_纹理_大小?,opengl-es,webgl,headless,xvfb,mesa,Opengl Es,Webgl,Headless,Xvfb,Mesa,我正在尝试使用WebGL和Xvfb生成一个大图像 当WebGL画布大小达到8192x8192px时,它工作得很好,我得到了我的图像。 当WebGL画布大小大于8192x8192px时,它不会生成我的图像 该脚本在Xvfb显示器上运行,在数字海洋VPS上的Ubuntu14.04上运行Mesa驱动程序10.1.3 我怀疑我不能得到我的大图像,因为它超过了GL_MAX_TEXTURE_SIZE的限制(它是8192)。似乎是这样,但我不知道为什么我的Mesa 10.1.3仍然是8k 如何将GL_MAX_

我正在尝试使用WebGL和Xvfb生成一个大图像

当WebGL画布大小达到8192x8192px时,它工作得很好,我得到了我的图像。
当WebGL画布大小大于8192x8192px时,它不会生成我的图像

该脚本在Xvfb显示器上运行,在数字海洋VPS上的Ubuntu14.04上运行Mesa驱动程序10.1.3

我怀疑我不能得到我的大图像,因为它超过了GL_MAX_TEXTURE_SIZE的限制(它是8192)。似乎是这样,但我不知道为什么我的Mesa 10.1.3仍然是8k

如何将GL_MAX_纹理大小从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:

// 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)
//test.js
var PNG=require('pngjs').PNG
//创建上下文
变量宽度=64
变量高度=64
var gl=require('gl')(宽度、高度,{preserveDrawingBuffer:true})
//将屏幕清除为红色
gl.clearColor(1,0,0,1)
总账清除(总账颜色\u缓冲\u位)
函数glToPNGStream(gl){
const png=新png({宽度,高度})
让我们
让b
让g
让k
让我
让r
常量像素=新的UINT8阵列(4*宽度*高度)
gl.readPixels(0,0,宽度,高度,gl.RGBA,gl.UNSIGNED_字节,像素)
对于(设j=0;j
除非是软件实现,否则无法增加实现的最大纹理大小。对于硬件OpenGL实现,这是由硬件允许的内容定义的,因此它不会改变


你所说的增长是在Mesa的OpenGL光栅化软件中。对于硬件驱动程序,它将使用GPU提供的功能。

我怀疑安装的GPU不支持如此大的纹理。