小编Dan*_*sen的帖子

WebGL 对象是否被垃圾回收?

在我分配的 JavaScript 内存中(例如 ArrayBuffer),当 GC 不再有任何引用时,它就会被释放,正如我所理解的那样,对吗?

WebGL 对象(如缓冲区或纹理)与 GPU 上的内存块相关联,由gl.bufferData()或分配gl.textureImage2D()

我想知道:如果我放弃对 WebGLTexture 或 WebGLBuffer 对象的最后一个引用,它是否会被垃圾收集,并由 JavaScript VM 自动释放其 GPU 内存块?

javascript garbage-collection webgl

6
推荐指数
1
解决办法
1534
查看次数

返回指向数组的指针的 C 函数语法正确吗?

在 C 中,您可以声明一个指向数组的变量,如下所示:

int int_arr[4] = {1,2,3,4};
int (*ptr_to_arr)[4] = &int_arr;
Run Code Online (Sandbox Code Playgroud)

尽管实际上它与声明一个指向 int 的指针相同:

int *ptr_to_arr2 = int_arr;
Run Code Online (Sandbox Code Playgroud)

但从语法上来说,它是不同的。

现在,一个返回这样一个指向数组(例如 int )的指针的函数会是什么样子?

c arrays syntax pointers declaration

5
推荐指数
1
解决办法
307
查看次数

在 Node.js 中,如何更改(覆盖)二进制文件中的字节而不添加字节

在 Node.js 中,如何更改(覆盖)二进制文件中的字节(以特定偏移量),而不在中间添加字节并更改其长度?

在 CI 中,只需执行类似 fopen() 的操作,使用“r+”、fseek() 到我想要更改的偏移量,然后使用 fwrite() 覆盖字节。Node.js 中的等价物是什么样子的?

javascript binary fs node.js

4
推荐指数
1
解决办法
1212
查看次数

WebGL 不喜欢带有索引绘图的 Index 255

这是一个最小的 WebGL 测试程序,它创建一个具有单个 uint8 值 255 的索引缓冲区。它应该绘制一个大小为 64px 的红色正方形,但事实并非如此(索引值对于绘制来说并不重要)。

不知何故,WebGL 会忽略索引为 255 的元素,尽管它适合无符号字节范围。使用 254 或其他值,红色方块将按预期显示。

这是 WebGL 的错误还是预期的行为?我找不到任何相关信息。

<canvas width="800" height="600"></canvas>
<script>
let canvas = document.querySelector("canvas");
let gl = canvas.getContext("webgl2");
let vert = gl.createShader(gl.VERTEX_SHADER);
let frag = gl.createShader(gl.FRAGMENT_SHADER);
let prog = gl.createProgram();
let index_buf = gl.createBuffer();

gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, index_buf);

gl.bufferData(
    gl.ELEMENT_ARRAY_BUFFER, new Uint8Array([255]), gl.STATIC_DRAW
);

gl.shaderSource(vert, `#version 300 es
    void main()
    {
        gl_Position = vec4(0,0,0,1);
        gl_PointSize = 64.0;
    }
`);

gl.shaderSource(frag, `#version 300 es
    precision highp float;
    out vec4 color;
    void …
Run Code Online (Sandbox Code Playgroud)

javascript webgl webgl2

3
推荐指数
1
解决办法
62
查看次数