Bitwise flags (ããããã©ã°)
ããããã©ã°ã¯å¤æ° (é常ã¯ã·ã³ãã«ãªæ´æ°å¤) ã®éåã§ãã¡ã½ããããã®ä»ã®ã³ã¼ãã®æ§é ã«ããã¦ãç¹å®ã®ä½¿ç¨æ³ãæ©è½ãæå¹ã«ãããç¡å¹ã«ãããããã®ã«ä½¿ç¨ã§ãããã®ã§ãããããã¬ãã«ã§æä½ãè¡ãã®ã§ããããé«éã«å¹çããã§ãã¾ããä¸è¬çã«ãåãã°ã«ã¼ãå ã®é¢é£ãããã©ã°ã«ã¯åä¸ã®å¤ (ãã¨ãã°ãåå 鲿°) ã®ä¸ã®ç°ãªããããä½ç½®ã表ãç¸è£çãªå¤ãå²ãå½ã¦ãããã®ã§ãåä¸ã®å¤ã§è¤æ°ã®ãã©ã°è¨å®ã表ããã¨ãã§ãã¾ãã
ãã¨ãã°ãWebGPU API ã§ã¯ãGPUDevice.createBuffer() ã¡ã½ããã§ GPUBuffer ãªãã¸ã§ã¯ãã使ãã¾ãããã®ã¡ã½ãããå¼ã³åºãéããã£ã¹ã¯ãªãã¿ã¼ã§ããããã¡ã¼ã§è¨±ãããç°ãªãä½¿ç¨æ³ãæå¹åãã 1 åã¾ãã¯è¤æ°ã®ãã©ã°ãå
¥ã£ã usage ããããã£ãå®ç¾©ãã¾ãã
usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE;
ãããã®å¤ã¯åãåå空éå ã§å®ç¾©ããã¦ãããããããã«åå 鲿°ã®å¤ãããã¾ãã
| ä½¿ç¨æ³ãã©ã° | åå é²è¡¨ç¾ | å鲿°ã§ç¸å½ããå¤ |
|---|---|---|
GPUBufferUsage.MAP_READ |
0x0001 | 1 |
GPUBufferUsage.MAP_WRITE |
0x0002 | 2 |
GPUBufferUsage.COPY_SRC |
0x0004 | 4 |
GPUBufferUsage.COPY_DST |
0x0008 | 8 |
GPUBufferUsage.INDEX |
0x0010 | 16 |
GPUBufferUsage.VERTEX |
0x0020 | 32 |
GPUBufferUsage.UNIFORM |
0x0040 | 64 |
GPUBufferUsage.STORAGE |
0x0080 | 128 |
GPUBufferUsage.INDIRECT |
0x0100 | 256 |
GPUBufferUsage.QUERY_RESOLVE |
0x0200 | 512 |
GPUBuffer.usage ããããã£ããå¤ãèªã¿åºãã¨ã1 åã®å鲿°ãè¿ãããããã¯ç°ãªãä½¿ç¨æ³ãã©ã°ã«å¯¾å¿ããç°ãªãå鲿°ã®å¤ã®åã§ããä¸è¨ã®ä¾ã«æ»ãã¨ãããã§æå®ããä½¿ç¨æ³ã§ä½æãã GPUBuffer ã® GPUBuffer.usage ããå¤ãèªã¿åºãã¨ã以ä¸ãè¿ãã§ãããã
GPUBufferUsage.COPY_SRCã«å¯¾å¿ããå鲿°ã® 4 ã«GPUBufferUsage.MAP_WRITEã«å¯¾å¿ããå鲿°ã® 2 ãå ã- çµæã¯ 6
å¤ã¯ç°ãªããã©ã°ããé¸ã°ãã¦ãããããããããã®å¤ã®çµã¿åããã¯ä¸æã§ãããããã°ã©ã ã¯åä¸ã®å¤ããã©ã®ãã©ã°ãè¨å®ããã¦ããããããã«ç¥ããã¨ãã§ãã¾ããããã«ããããè«çç©æ¼ç®åãç¨ãã¦åæãããå¤ã®ä¸ã§ãã©ã°ãè¨å®ããã¦ããããç°¡åã«ãã§ãã¯ã§ãã¾ãã
if (buffer.usage & GPUBufferUsage.MAP_WRITE) {
// ãããã¡ã¼ã«ä½¿ç¨æ³ MAP_WRITE ããã
}