Есть ли в XNA Texture1D?

Мне нужно передать массив Vector3 или Vector4 в мой пиксельный шейдер. Есть ли что-то вроде одномерной текстуры, которую я могу установить с процессора и сэмплировать на графическом процессоре?


person Mr Bell    schedule 16.11.2011    source источник
comment
Как насчет одномерной Texture2D? Texture2D SimpleTexture = new Texture2D(GraphicsDevice, 1, 100, false, SurfaceFormat.Color);   -  person Elideb    schedule 16.11.2011
comment
Да, я тоже об этом думал, но это ограничивает вас не более чем 4096 в любом измерении, а мне нужно что-то вроде 76 800 записей.   -  person Mr Bell    schedule 16.11.2011
comment
Действительно ли было необходимо задавать 6 вопросов подряд о том, как это сделать?   -  person Andrew Russell    schedule 17.11.2011
comment
возможный дубликат Что делает функция пиксельного шейдера tex1D сделать с помощью Texture2d   -  person Neil Knight    schedule 17.11.2011
comment
Хотя мои недавние вопросы похожи, я думаю, что по отдельности они спрашивают о разных вещах. Например, в вызове Нила я спрашиваю о функциональности tex1D, а в этом я спрашиваю, существует ли структура данных 1d. Как я полагаю, кто-то может знать, есть ли текстура 1d, но может быть не знаком с работой функции hlsl tex1d()   -  person Mr Bell    schedule 17.11.2011


Ответы (1)


Нет встроенного класса, который вы можете использовать, но вы можете создать свой собственный (непроверенный):

public class Texture1D
{
    GraphicsDevice device;
    Vector4[] pixels;

    bool mipMap = false;
    SurfaceFormat Format;

    public Texture1D (GraphicsDevice Device, int Length)
    {
        pixels = new Vector4[Length];
        device = Device;
        Format = SurfaceFormat.Color;
    }

    public Texture1D (GraphicsDevice Device, int Length, bool mipMap, SurfaceFormat format)
    {
        pixels = new Vector4[Length];
        device = Device;
        this.mipMap = mipMap;
        Format = format;
    }
}
person annonymously    schedule 28.11.2011