- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 WebGL 和 Xvfb 生成大图像。
当 WebGL Canvas 尺寸达到 8192x8192 像素时 - 它运行良好,我得到了我的图像。
当 WebGL Canvas 尺寸大于 8192x8192px 时 - 它不会生成我的图像。
脚本在 digital ocean VPS 上的 Ubuntu 14.04 上使用 Mesa 驱动程序 10.1.3 在 Xvfb 显示器上运行。
我怀疑我无法获得我的大图像,因为它超过了 GL_MAX_TEXTURE_SIZE 限制(它是 8192)。好像 this limit was raised to 16k in Mesa 7.10但我不知道为什么 Mesa 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]
我正在运行来自 headless-gl 的示例脚本结合pngjs输出一个红色方 block 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)
最佳答案
除非是软件实现,否则您无法增加实现的最大纹理大小。对于硬件 OpenGL 实现,这是由硬件允许的定义,因此它不会改变。
您所说的增加是在 Mesa 的软件 OpenGL 光栅器中。对于硬件驱动程序,它将使用 GPU 提供的内容。
关于opengl-es - 如何增加台面驱动程序的 GL_MAX_TEXTURE_SIZE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40645132/
我正在尝试使用 WebGL 和 Xvfb 生成大图像。 当 WebGL Canvas 尺寸达到 8192x8192 像素时 - 它运行良好,我得到了我的图像。 当 WebGL Canvas 尺寸大于
我正在开发一个依赖于 OpenGL ES 2.0 的图像处理程序,因此它可以部署在大量设备上。在很多情况下,人们会使用小图像,这不会绕过纹理限制,但是对于每个方向上千像素的较大图像,它可能无法在多个设
我正在使用 AndEngine 和 OpenGL ES 2.0。我一直在阅读有关 GL_MAX_TEXTURE_SIZE 以及如何将我的纹理保持在 1024x1024 以下的内容。我在 TMX 扩展中
我最近在多台 Android 设备上测试了我的一款游戏。在那期间,我遇到了与 Galaxy S2 的奇怪遭遇。当我启动游戏时,除了背景之外,整个游戏都运行良好。游戏的背景显示为黑色而不是预期的纹理。在
我正在开发一个具有高清图形的安卓应用程序。我的 HTC Desire HD 加载大型图形没有问题,但我的(较旧的)HTC Magic 只显示白色纹理。我读到 GL_MAX_TEXTURE_SIZE 在
我想获取GL_MAX_TEXTURE_SIZE的值在 Qt “早期”,因为我将为我的应用程序生成一些纹理图集。 我明白 glGetIntegerv没有“有效”上下文将无法工作。所以我创建了一个 QOp
我一直在搜索 glbenchmark.com对于屏幕尺寸(宽度或高度)大于 GL_MAX_TEXTURE_SIZE 的设备。我发现超过一百个设备的 GL_MAX_VIEWPORT_WIDTH 和 GL
我是一名优秀的程序员,十分优秀!