ПрограммированиеФорумГрафика

Идиотский вопрос про текстуры в С#, XNA

Страницы: 1 2 Следующая »
#0
12:48, 29 мая 2010

Как осуществляется доступ к текстуре2д?
Если я загружаю текстуру в какую-то переменную, а потом присваиваю её ещё нескольким, то я получаю несколько копий её в памяти, или всё-таки они по человечески ссылками на одну и ту же структуру данных обойдутся, извините?

#1
13:26, 29 мая 2010

Ты даёшь команду создать 2Д текстуру.
Что делает XNA:

Копирование структуры текстуры если и разрешено (я не пробовал), то скопирует эти вот служебные поля, зона в видеопамяти останется той же. Если тебе надо сделать полную копию текстуры, создавай новую с тем же размером и вызывай что нибудь вроде CopyRects из старой в новую (не уверен как эта функ. называется в XNA).

#2
13:36, 29 мая 2010

yaapelsinko
> Если я загружаю текстуру в какую-то переменную, а потом присваиваю её ещё
> нескольким, то я получаю несколько копий её в памяти, или всё-таки они по
> человечески ссылками на одну и ту же структуру данных обойдутся, извините?

Тут дело не в незнании XNA а в незнании C#.  Есть такая штука в C#, называется "ссылочный тип данных". Класс является ссылочным типом данных.

Если мы напишем так:

class Omg
{
     public int A = 100;
}


Omg f1 = new Omg();  
Console.WriteLine(f1.A.ToString()); //выведится значение 100

а теперь

Omg f2 = f1;
f2.A = 666;

Console.WriteLine(f1.A.ToString()); //выведится значение 666

Мы изменили "f2" а значение поменялось у "f1"

Тоесть ты ни чего не копируешь! Раздаёшь ссылки.

#3
13:37, 29 мая 2010

Ну если два раза вызвать контент.лоад<текстуре2д>(одно и то же имя файла), то наверно тоже копия получится?
Энивей, чего-чего, а копировать мне как раз и не надо. Я наоборот волнуюсь, как бы у меня сотня спрайтов с полями типа Texture2D не забило своими одинаковыми текстурами всю память. Стало быть, не забьёт. =)

#4
14:03, 29 мая 2010

yaapelsinko
> Ну если два раза вызвать контент.лоад<текстуре2д>(одно и то же имя файла), то
> наверно тоже копия получится?
да

#5
15:58, 29 мая 2010

.L
> yaapelsinko
> > Ну если два раза вызвать контент.лоад<текстуре2д>(одно и то же имя файла), то
> > наверно тоже копия получится?
> да

нет! ContentPipeline не сделает копию. если нужна копия, то грузи через Texture2D.FromFile

#6
16:25, 29 мая 2010

.L
Вот бы знать, где у текстуре2д написано, ссылочный он тип или значащий.

#7
16:46, 29 мая 2010

yaapelsinko,
In C#, classes and structs are semantically different. A struct is a value type, while a class is a reference type.
класс - всегда ссылочный тип в шарпе.

C# Language Specification
Comparison Between C++ and C#

#8
17:46, 29 мая 2010

Может сначала ознакомится с C# стоит?

#9
17:48, 29 мая 2010

yaapelsinko
> Вот бы знать, где у текстуре2д написано, ссылочный он тип или значащий.
уже ответили
Ps-spectre
> A struct is a value type, while a class is a reference type.


текстура это класс.  Если ты не можешь догадаться класс это или нет - можешь сделать НАПРИМЕР так: клацаешь правой кнопкой мыши по "текстуре2д"  (как там у вас тип называется) и выбераешь "GoToDefenition".  там ты сможешь увидеть, класс и это. Это один из вариантов : )

Bonus
> нет! ContentPipeline не сделает копию. если нужна копия, то грузи через
> Texture2D.FromFile
а, ну может.  Там ж пайплайны юзаются. Я х.з. как они устроены. Я этим УГ - XNA не пользуюсь. Вот если в DX грузить текстуру то будут копии.

#10
18:01, 29 мая 2010

.L
> Я этим УГ - XNA не пользуюсь
ну началось
no comments

#11
3:08, 30 мая 2010

Bonus
> ну началось
> no comments

Ну по ответам-то уже видно, гражданин получил возможность блеснуть знаниями и самоутвердиться лишний раз. :)
Хотя казалось бы, на вопрос ответь и не выпендривайся, будешь выглядить нормальным человеком, а не - понятно, кем.

#12
3:11, 30 мая 2010

Zakus
> Может сначала ознакомится с C# стоит?
Сначала - перед чем?

#13
3:05, 31 мая 2010

yaapelsinko
> Ну по ответам-то уже видно, гражданин получил возможность блеснуть знаниями и
> самоутвердиться лишний раз. :)
А потом такие умники вот ноют, что им ни кто не подсказывает. Что форум плохо к новичкам относится.  Не подсказываешь - плохой.  Подсказываешь - плохой.  Вы там соберитесь и определитесь уже чтоли.

yaapelsinko
>будешь выглядить нормальным человеком, а не - понятно, кем.
Я то и выгляжу человеком. Я чем мог - помог, не проигнорил.  А ты, для начала, выучи русский язык..  "выглядить"  Хотя ты сам, впринципе, себя уже охарактеризовал:
>Идиотский вопрос ....

yaapelsinko
> Хотя казалось бы, на вопрос ответь и не выпендривайся
выпендривания - это такие вот никчёмные посты как #11

yaapelsinko
> Хотя казалось бы, на вопрос ответь и не выпендривайся
Это вообще не твоё дело, усёк?  У нас свобода слова, правил форума я не нарушал. Я выразил своё мнение об этой никчёмной поделке мелкомягких.  Если так тебя терзают мои слова то я уж добавлю: "по моему мнению".

Подрасти школьник а потом кати бочку.

#14
8:10, 31 мая 2010

об этой никчёмной поделке мелкомягких
Сделай лучше.

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.