Проблема с текстурой XNA - PullRequest
6 голосов
/ 18 февраля 2011

Хорошо, в последнее время я пробовал много нового, и у меня было несколько моментов остановки. Я решил оставить 3d, потому что подумал, что просто не знаю и не могу понять, как работает кодирование, хотя я довольно хорошо разбираюсь в математике, поэтому решил, что сделаю еще один урок.

Я пытаюсь выучить 3d XNA на c #, я недавно разработал 2d и хочу двигаться дальше, моя проблема в том, что с (на мой взгляд) самой базовой из 3d фигур, кубом, я сталкиваюсь с проблемы, после успешного экспорта моего куба из blender (после 7-й попытки> _>) и импорта его в XNA, я не могу получить текстуру для корректного отображения на кубе, поэтому я загрузил модель куба из файла примера исходного кода и попытался использовать это, и его текстуру по умолчанию, и у меня все еще есть проблемы.

Как правило, код для рисования куба:

foreach (ModelMesh mesh in model.Meshes)
            {
                GraphicsDevice.RasterizerState = RasterizerState.CullClockwise;
                foreach (BasicEffect effect in mesh.Effects)
                {

                    effect.TextureEnabled = true;
                    //effect.Texture = texture;
                    effect.World = world;
                    effect.View = view;
                    effect.Projection = projection;
                    effect.LightingEnabled = false;
                }

                mesh.Draw();
            }

RenderState и LightingEnabled являются новыми, пытается исправить, если сам. Когда я использую свою собственную текстуру, текстура выглядит как растянутая, и не показывает все изображение на кубе, но все лица выглядят одинаково, поэтому его не оборачивая это.

Кроме того, чтобы увидеть все грани, я вращаю куб как:

 position -= new Vector3(0, 0.00f, 0.0100f);
            angley += 0.01f;
            anglez += 0.01f;

            world = Matrix.CreateScale(1.5f) * Matrix.CreateRotationZ(anglez) * Matrix.CreateRotationY(angley) * Matrix.CreateTranslation(position);

Изменение z, чтобы я мог проверить другую теорию.

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

Я надеюсь, что кто-то может мне помочь, просто кажется, что это должно быть намного проще, чем кажется, рисовать простой текстурированный куб, и большинство онлайн-уроков взяты из более старых версий XNA, поэтому код не совпадает, и я теряюсь при попытке заменить его текущим кодом (в руководствах, которые создают куб в коде, а не в модели.)

В любом случае, спасибо за любые ответы.

EDIT Рисование этого куба с помощью CreateOrthographic заставляет его выглядеть правильно (первый использует перспективу), но все еще не любит текстуры: (

EDIT2 когда я использую свой куб, он растягивается, когда я использую куб из источника, это сплошной цвет.

EDIT3

Я бы, вероятно, получил бы ответ раньше, если бы я упомянул, что отображал FPS с использованием шрифта / spritebatch, когда я выяснял, почему это не сработало, и сравнивая его с примером, который работал, я нашел его, сейчас, Кто-нибудь знает, как заставить это работать?

1 Ответ

6 голосов
/ 18 февраля 2011

Для себя и всех, кто столкнулся с этой проблемой>. <</p>

Используете ли вы:

SpriteBatch.begin()

сделать что-нибудь в вашем коде? Если это так, то это нарушает способ рендеринга вашей программы в 3d, проверьте эту ссылку (для до XNA 4.0):

http://blogs.msdn.com/b/shawnhar/archive/2006/11/13/spritebatch-and-renderstates.aspx

И эта ссылка, если вы используете XNA 4.0:

http://blogs.msdn.com/b/shawnhar/archive/2010/06/18/spritebatch-and-renderstates-in-xna-game-studio-4-0.aspx

В частности, исправлена ​​эта проблема:

GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;

Добавим, что до того, как цикл foreach решил эту проблему для меня, вам, возможно, придется попробовать другие строки в этой статье

Всем, кто читает это, удачи в ваших мечтах XNA: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...