Привет.
У Texture2D есть метод GetNativeTexturePtr(), возращающий объект типа IntPtr. Как из этого объекта вытянуть байты пикселей?
Marshal.Copy выдает какой-то ненулевой массив байтов на абсолютно черной текстуре.
On Direct3D-like devices this returns a pointer to the base texture type (IDirect3DBaseTexture9 on D3D9, ID3D11Resource on D3D11). On OpenGL-like devices the texture "name" is returned; cast the pointer to integer type to get it. On platforms that do not support native code plugins, this function always returns NULL.
jetyb писал(а):Привет.
У Texture2D есть метод GetNativeTexturePtr(), возращающий объект типа IntPtr. Как из этого объекта вытянуть байты пикселей?
Marshal.Copy выдает какой-то ненулевой массив байтов на абсолютно черной текстуре.
kripto289 писал(а):rак это ненулевой массив байтов на чёрной текстуре? Само по себе, всё что не равно 0 уже не чёрный цвет.
jetyb писал(а):Нет, массив именно не null - евой, он состоит вовсе не из сплошных 0.
Не ноли не только в начале массива, но и в середине без заметной периодики. Платформа dx11, несколько раз проверял.
Могу предположить, что из-за сыроватости нового dx11 в IntPtr копируются данные из какой-то левой рендер текстуры.
из-за сыроватости нового dx11
jetyb писал(а):GetPixels32 сейчас и использую, но GetNativeTexturePtr на порядок быстрее работает. Да и туповато это слегка - получать Color32 на 8 битной текстуре.
Производительнее код просто сделать хочется.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8