Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
4 / 4 / 2
Регистрация: 15.11.2014
Сообщений: 40
1

Structured buffer с массивом в каждом элементе

15.03.2016, 18:10. Показов 654. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер, есть структура (StructA), которая содержит массив элементов (тип - другая структура - StructB).

C#
1
2
3
4
5
6
struct StructA
{
    Поле 1;
    Поле 2;
    StructB[] Array;
}
Есть массив из элементов с типом StructA, передаю в шейдер этот массив как StructuredBuffer, но вот проблема: у каждого элемента разное кол-во элементов в Array. Логично считать размер StructuredBuffer, учитывая максимальный размер массива, но тогда куча памяти будет тратиться впустую (есть шанс, что Array может вообще не содержать элементов). Как еще можно подобное реализовать?

Добавлено через 18 часов 57 минут
Окей, понял, что в принципе больше никак, но есть проблема - есть такая вот структура:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[StructLayout(LayoutKind.Explicit, Size = 104)]
    public struct BvhStruct
    {
        [FieldOffset(0)]
        public int ID;
 
        [FieldOffset(4)]
        public BoundingBoxStruct BoundingBox;
 
        [FieldOffset(28)]
        public int Count;
 
        [FieldOffset(32)]
        public bool HaveLeft;
        [FieldOffset(36)]
        public bool HaveRight;
 
        [FieldOffset(40)]
        public bool HaveEscape;
 
        [FieldOffset(44)]
        public int LeftID;
        [FieldOffset(48)]
        public int RightID;
        [FieldOffset(52)]
        public int EscapeID;
 
        [FieldOffset(56)]
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public uint[] TriangleIndexes;
    }
Передаю массив с элементами этого типа как StructuredBuffer, но данные именно для массива TriangleIndexes приходят битыми. Я пробовал и паковать структуру кратно 16 бит..но результат один - данные битые. Что я не так делаю? Размер буфера вычисляется правильно.

Добавлено через 6 часов 55 минут
Знающие люди, помогите упаковать эту структуру! Я все уже перепробовал, перечитал кучу статей - пока не нашел решение

Добавлено через 19 часов 35 минут
Потратив кучу времени, я все-таки решил проблему: использую не маршал, а fixed array и небезопасный код, почему-то маршал неправильно паковал массив, и массив заполнялся левыми значениями, когда вся остальная структура паковалась нормально.
P.S.: Снова всем большое спасибо за ответы и помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2016, 18:10
Ответы с готовыми решениями:

Где ошибка: ClearBuffer(Buffer,sizeof(Buffer)); WRITE(Buffer,test,20,ALL);
Cho ne pravilno v sledyushem code: #define ALL; ........ ClearBuffer(Buffer,sizeof(Buffer));...

Найти токи и напряжения на каждом элементе
Каким образом можно найти токи и напряжения на элементах R1, L1, C1? Что-то попыталась сделать, но...

Определить падение напряжения на каждом элементе цепи
Здравствуйте, помогите пожалуйста! Электрическая цепь (рисунок), получает питание от промышленной...

Посчитать количество слогов в каждом элементе списка
К примеру дан список слов такой: s = как посчитать количество слогов в каждом элементе списка?

0
15.03.2016, 18:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2016, 18:10
Помогаю со студенческими работами здесь

Определить количество букв «k» в каждом элементе этого массива
Добрый вечер! Помогите пожалуйста доделать прогу) Вот само задание: Задан массив слов А из 15...

Посчитать количество одинаковых цифр в каждом элементе вектора
Вопрос такого плана:в векторе есть n количеств элементов,нужно посчитать количество одинаковых цифр...

Подсчитать сумму нечетных цифр в каждом элементе одномерного массива
Используя функцию пользователя, подсчитать сумму нечетных цифр в каждом элементе одномерного...

Сведения о каждом химическом элементе из периодической таблицы Д.И. Менделеева представить в виде структуры
Задание 1. Сведения о каждом химическом элементе из периодической таблицы Д.И. Менделеева...

Составить новый массив с суммой четных цифр в каждом элементе исходного массива
Здравствуйте, форумчане! нужна ваша помощь в решении одной задачки. С клавиатуры вводятся длина...

В каждом элементе массива А[10] подсчитать количество единичных битов среди разрядов с номерами от 3 до 6
В каждом элементе массива А подсчитать количество единичных битов среди разрядов с номерами от 3 до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru