c ++ инициализация значения

Я читаю 4-е издание праймера по c ++ от Стэнли Липманна, и я на странице 92, посвященной инициализации значения.

Я просто не понимаю, когда речь идет об инициализации значения. Я просмотрел и знаю, что есть также инициализация по умолчанию и инициализация нуля. Может ли кто-нибудь объяснить инициализацию значения?

Переходя к этому параграфу ..

пункт a)

«Некоторые классы не определяют значение по умолчанию. конструктор. Мы не можем инициализировать вектор такого типа, указав только размер, мы также должны указать начальное значение "

Я понимаю сказанное выше, но считаю, что приведенное ниже противоречит приведенному выше предложению.

пункт b)

" Тип элемента может относиться к типу класса это не определяет никаких конструкторов. В этом случае библиотека по-прежнему создает объект, инициализированный значением. Это делает это путем инициализации каждого значения Я принял на себя довольно сложную задачу. В моей игре XNA я хочу реализовать фильтр NTSC Бларгга. Это библиотека C, которая преобразует растровое изображение, чтобы оно выглядело так, как будто оно было выведено на ЭЛТ ...

Я взял на себя довольно сложную задачу. В моей игре XNA я хочу реализовать фильтр NTSC Бларгга . Это библиотека C, которая преобразует растровое изображение, чтобы оно выглядело так, как будто оно было выведено на телевизор с ЭЛТ в стандарте NTSC. На самом деле, это довольно точно.

Первое, что я попробовал некоторое время назад, было просто использовать саму библиотеку C, назвав ее как dll. Здесь у меня было две проблемы: 1. Я не мог правильно скопировать некоторые данные, поэтому изображение было испорчено, но, что более важно, 2. это было очень медленно. Требовалось получить данные растрового изображения XNA Texture2D , пропускаем его через фильтр, а затем снова устанавливаем данные в текстуру. Частота кадров была испорчена, поэтому я не мог пойти по этому пути.

Теперь я пытаюсь преобразовать фильтр в пиксельный шейдер. Проблема здесь (если вы любите смотреть на код - я использую код SNES, потому что он самый простой), заключается в том, что он обрабатывает очень большие массивы и полагается на интересные операции с указателями. Я проделал много работы, переписав алгоритм, чтобы он работал независимо для каждого пикселя, как того требует пиксельный шейдер. Но я не знаю, сработает ли это когда-нибудь. Я пришел к вам, чтобы узнать, возможно ли это закончить.

  1. Здесь используется предварительно вычисленный массив, содержащий 1 048 576 целых чисел. Неужели только это выходит за рамки каких-либо ограничений для пиксельного шейдера? Его нужно установить только один раз, а не один раз за кадр.
  2. Даже если это нормально, Я знаю, что HLSL не может индексировать массивы по переменной. Он должен развернуть его до миллиона операторов if, чтобы получить правильный элемент массива. Убьет ли это выступление и снова сделает его бесплодным? Есть несколько обращений к массиву на пиксель.
  3. Есть ли шанс, что мой первоначальный план использовать библиотеку как есть может сработать? Мне просто нужно, чтобы он был быстрым.
  4. Я никогда раньше не писал шейдер. Есть ли еще что-нибудь, о чем мне следует знать?

edit: Дополнение к №2. Я только что где-то читал, что hlsl не только может не обращаться к массивам по переменной, но даже чтобы развернуть его, индекс должен быть вычислен во время компиляции. Так ли это, или это решает "раскрутка"? Если это правда, я думаю, что я облажался. Каким-либо образом обойти это? Мой алгоритм в основном представляет собой прославленную версию "входной пиксель этого цвета, Есть ли у Microsoft решения, сопоставимые с GWT, для компиляции C # в JavaScript? Я знаю, что есть сценарий #, который не поддерживается MS, и проект Volta, который был убит после его предварительного просмотра, но мне было интересно, есть ли какие-нибудь хорошие решения, доступные сейчас или, по крайней мере, какой-нибудь хороший проект с открытым исходным кодом, который может интегрировать ASP.NET с GWT. Спасибо.

16
задан orad 18 April 2011 в 04:53
поделиться