Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Почему-то не отрисовывается трехугольник :( |
Автор: it_medved 28.6.2008, 14:39 | ||
Вот код
И ничего не происходит :( |
Автор: kuller 28.6.2008, 15:47 |
it_medved, тебе просто ТРЕУГОЛЬНИК надо нарисовать??? |
Автор: DimonSE 29.6.2008, 18:20 | ||
Пример случайно не с книги "Миллер Т. - DirectX 9 с управляемым кодом. Программирование игр и графика"? ![]() Я такой точно пример видел в отсканированной халявной версии книжки. Пока понял что там скорее всего ошибка(или просто неудачно отсканированное) dev.DrawUserPrimitives(PrimitiveType.TriangleList, 3, n); второй параметр (цифра 3) означает что у тебя три треугольника, а ведь у тебя только один правда? кроме того перед dev.BeginScene(); желательно вызвать dev.Clear(ClearFlags.Target, System.Drawing.Color.<твой цвет фона>, 1.0f, 0); а после dev.EndScene(); нужно dev.Present() для того чтоб твое творение появилось)))) ну и при изменении размеров окна будут у тебя глюки, устраняется так: после dev.Present() нужно еще dev.Invalidate();а чтоб не мерцало то в конструкторе вписать строку this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true); Да ты только метод Paint нам показал а инициализацию dev почему нет в примере, может и там замутил чтото? Ой чтото много переделать нада)) пожалуй я выложу твой код в рабочем состоянии
Добавлено через 8 минут и 8 секунд Кстати книга "Миллер Т. - DirectX 9 с управляемым кодом. Программирование игр и графика" классная! А то что в отсканированной версии ошибок много, заставляет действительно вникнуть в то что написано,а не тупо драть с примера как я иногда в силу природной лени делаю ![]() сорри за оффтоп |
Автор: it_medved 29.6.2008, 19:21 |
Спасиб, функция dev.Present(); помогла, трехугольник отрисовывается, но на фоне хрень какаето происходит :( Вот проект там экзешник, посмотри сам |
Автор: DimonSE 11.7.2008, 23:47 |
Э брат ты в обработчике Paint забыл вначале сделать dev.Clear(ClearFlags.Target, Color.LightGreen, 1.0f, 0); поэтому у тебя фон и не очищен! А вообще твой код у меня не откомполился даже, наверно DirectX SDK у меня другой. вместо строки n[0].Position = new Vector4(тра-ля-ля); нужно n[0].SetPosition(new Vector4(тра-ля-ля); |