forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   Вопросы по XNA. (http://forum.boolean.name/showthread.php?t=16854)

Dream 27.11.2012 21:12

Ответ: Вопросы по XNA.
 
Ну а было сколько? если было намного больше покажи код.
Цитата:

Почему иногда некоторые переменные принимают значение Infinity?
деление на ноль или перебор.

wppt 27.11.2012 22:53

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от Dream (Сообщение 244972)
Ну а было сколько? если было намного больше покажи код.

деление на ноль или перебор.

было 2.5k++

А разве при делении на ноль не должно бросаться исключение? А перебор это... ?

wppt 27.11.2012 22:55

Ответ: Вопросы по XNA.
 
Код вот:

Код:

if (mymouse.LeftButton == ButtonState.Pressed)
    {
        try
        {
            texture2D.GetData<Color>(0, new Rectangle(mymouse.X, mymouse.Y, 1, 1), dat, 0, 1);
        }
        catch
        {
            //тут пока ничего
        }
    }

это все в draw

Как исключить бесконечность и в случае, если переменная ей равняется, присваивать переменной ноль? Есть ли встроенный тип для бесконечности?

Dream 27.11.2012 23:21

Ответ: Вопросы по XNA.
 
когда я говори код я имел ввиду хотя-бы класс Game твой.
Уласс целиком. ну или слишком много всего тогда конструктор,LoadContent,Initialize,Draw и Update.
ну и вообще если включать вертикальную синхронизацию - обычно больше 60 фпс никогда не будет. поэтому смысла думать об этом нету покачто

Если число с плавающей точкой(float) делить на 0 -исключение н е выбрасывается.

PHP код:

float.IsInfinity()
float.IsNaN() 

P.S. Не забывай использовать кнопку "Править" и редактируй свои сообщения - добавляя информацию, чтобы не было по несколько твоих постов подряд.

wppt 27.11.2012 23:24

Ответ: Вопросы по XNA.
 
класс, в смысле, класс целиком, или конструктор?

Да кстати можешь подсказать, что быстрее будет?
У меня переменные есть, значения которых только положительные. Как будет быстрее - оформить для них свойства, или каждый раз при изменении проверять, меньше ли они нуля?
Или, может еще способ есть?

Dream 27.11.2012 23:31

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от wppt (Сообщение 244988)
класс, в смысле, класс целиком, или конструктор?

Да кстати можешь подсказать, что быстрее будет?
У меня переменные есть, значения которых только положительные. Как будет быстрее - оформить для них свойства, или каждый раз при изменении проверять, меньше ли они нуля?
Или, может еще способ есть?

Оформить для них свойство и в свойстве проверять значение

PHP код:

float PositiveValue
{
  
get{return _positiveValue;}
set{
_positiveValue=MathHelper.Clamp(value,0,float.MaxValue);
или
if(value<0)
  
value=0;
_positiveValue=value;

}



wppt 28.11.2012 19:37

Ответ: Вопросы по XNA.
 
Спасибо! А как же все таки реализовать заливку? Это ж получается мне на вход метода нужно взять рендертаргет и рекурсивно менять цвета пикселей, пока цвет их равен старому? Не медленно ли будет? Попробую ка я сделать это, и посмотрю

что-то не работает:
Код:

void fill(int x, int y, Color newC, Color oldC,RenderTarget2D rend)
{
    Color[] datoa = new Color[1];
    rend.GetData<Color>(datoa,0,1);
    if (x >= 0 && y >= 0 && x < rend.Width && y < rend.Height && datoa[0] == oldC && datoa[0] != newC)
        {
            datoa[0] = newC;
            fill(x - 1, y, newC, oldC, rend);
            fill(x + 1, y, newC, oldC, rend);
            fill(x, y - 1, newC, oldC, rend);
            fill(x, y + 1, newC, oldC, rend);
        }
        else return;
}

This rectangle is to large or too small и т.д.
Или нужно через гетдата всю текстуру передавать?

wppt 01.12.2012 17:23

Ответ: Вопросы по XNA.
 
можете подсказать, возможно ли перегрузить унарный оператор +(не ++, именно +)?

Dream 01.12.2012 17:55

Ответ: Вопросы по XNA.
 
Цитата:

public static CType operator +(CType i1,CType i2)
{
return resultCType;
}
По поводу заливки - ты всегда берёшь только первый пиксель.

PHP код:

Color[] colors = new Color[1];
GetTexture().GetData(0,new Rectangle(x,y,1,1),colors01); 


wppt 01.12.2012 20:37

Ответ: Вопросы по XNA.
 
только первый? А как надо?

Насчет перегрузки - как перегрузить унарный плюс?

Dream 02.12.2012 02:27

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от wppt (Сообщение 245408)
только первый? А как надо?

Насчет перегрузки - как перегрузить унарный плюс?

в том коде что я дал убераем один параметер


По поводу как надо - я дал же код "как над"

wppt 02.12.2012 14:25

Ответ: Вопросы по XNA.
 
спасибо, попробую!
Что то программа зависает :(

А что же в сетдате писать?

Dream 03.12.2012 04:57

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от wppt (Сообщение 245500)
Что то программа зависает :(?

ну,завивисает наверно на fill, ты же никаким пикселям не меняешь цвет, вот оно и бесконечно туда сюда ходит

wppt 03.12.2012 16:18

Ответ: Вопросы по XNA.
 
Больше не зависает, ну а что же в сетдата писать?

Не знаю, у меня вообще бред получается:

Код:

//lload content           
            TextData = new Color[800 * 600];
            maprender.GetData<Color>(TextData);

//сам метод
        void fill(int x, int y, Color newC, Color oldC,RenderTarget2D rend)
        {
            Color[] colors = new Color[1];
            rend.GetData(0, new Rectangle(x, y, 1, 1), colors, 0, 1);
            if (x >= 0 && y >= 0 && x < rend.Width && y < rend.Height && colors[0] == oldC && colors[0] != newC)
            {
                TextData[y * rend.Width + x] = colors[0];
                rend.SetData<Color>(TextData);
                fill(x - 1, y, newC, oldC, rend);
                fill(x + 1, y, newC, oldC, rend);
                fill(x, y - 1, newC, oldC, rend);
                fill(x, y + 1, newC, oldC, rend);
            }
            else return;
        }

при нажатии кнопки мыши должен вызываться метод. Но экран окрашивается в cornflowerblue и все :(

Dream 03.12.2012 18:38

Ответ: Вопросы по XNA.
 
без всего проекта ничем не могу помочь


Часовой пояс GMT +4, время: 05:02.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot