Design: ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ массив C++ Π² WebGL Π±Π΅Π· копирования

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 18 Π΄Π΅ΠΊ. 2019  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: WebAssembly/design

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° 3D-ΠΈΠ³Ρ€Ρ‹ с использованиСм WebAssembly с WebGL достиТима, Ссли ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ массив C++ Π² WebGL API Π±Π΅Π· копирования массива.

Нам Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ массива Π² WebGLRenderingContext.bufferData(), Π½ΠΎ ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ JavaScript ArrayBuffer ΠΈΠ»ΠΈ ArrayBufferView. Если ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ массив C++ ΠΈΠ»ΠΈ Ссли ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ArrayBufferView Π±Π΅Π· копирования Π΄Π°Π½Π½Ρ‹Ρ… массива, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π°.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ сСгодня Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ WebGL ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ArrayBufferView, ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ прСдставлСниС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² памяти WebAssembly. Π’ основном Π²Ρ‹ создаСтС прСдставлСниС Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ массива Π² ArrayBuffer памяти, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ .subarray ( Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ , привязки emscripten GL Π΄Π΅Π»Π°ΡŽΡ‚ это).

Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли Π΄Π°Π½Π½Ρ‹Π΅ плоскиС Π² памяти. Для массива C ΠΈΠ»ΠΈ C++ std::vector это Ρ‚Π°ΠΊ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° массивов C++ Π² WebGL Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сСгодня.

Π­Ρ‚ΠΎ зависит ΠΎΡ‚ прохоТдСния Ρ‡Π΅Ρ€Π΅Π· Π±Π°Π½ΠΊΠΎΠΌΠ°Ρ‚ JS, ΠΊΠ°ΠΊ Π² этой ссылкС Ρ€Π°Π½Π΅Π΅. Но Ρ‚Π°ΠΌ Π½Π΅ создаСтся копия! (Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JS, ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ вопрос, ΠΈ Π΄Π°, Π½ΠΎΠ²Ρ‹Π΅ спСцификации позволят это, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏΡ‹ интСрфСйсов, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» @Macil .)

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ прСдлоТСния Host Bindings, Reference ΠΈ/ΠΈΠ»ΠΈ GC позволят экзСмплярам WebAssembly ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ArrayBufferViews Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² WebGL).

Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ сСгодня Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ WebGL ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ArrayBufferView, ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ прСдставлСниС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² памяти WebAssembly. Π’ основном Π²Ρ‹ создаСтС прСдставлСниС Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ массива Π² ArrayBuffer памяти, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ .subarray ( Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ , привязки emscripten GL Π΄Π΅Π»Π°ΡŽΡ‚ это).

Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли Π΄Π°Π½Π½Ρ‹Π΅ плоскиС Π² памяти. Для массива C ΠΈΠ»ΠΈ C++ std::vector это Ρ‚Π°ΠΊ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° массивов C++ Π² WebGL Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сСгодня.

Π­Ρ‚ΠΎ зависит ΠΎΡ‚ прохоТдСния Ρ‡Π΅Ρ€Π΅Π· Π±Π°Π½ΠΊΠΎΠΌΠ°Ρ‚ JS, ΠΊΠ°ΠΊ Π² этой ссылкС Ρ€Π°Π½Π΅Π΅. Но Ρ‚Π°ΠΌ Π½Π΅ создаСтся копия! (Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JS, ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ вопрос, ΠΈ Π΄Π°, Π½ΠΎΠ²Ρ‹Π΅ спСцификации позволят это, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏΡ‹ интСрфСйсов, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» @Macil .)

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π½Π° бСспокойство ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡΡŒ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, снова ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅, Ссли Π½Π΅Ρ‚.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

mfateev picture mfateev  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

nikhedonia picture nikhedonia  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

JimmyVV picture JimmyVV  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

spidoche picture spidoche  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ghost picture ghost  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ