|
Вопрос # 4 790/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Разбираюсь с DirectX в C#, пример взял из интернета. Создал класс (приложение), во время выполнения InitGraphics(), появляется ошибка, при рисовании формы вызывается метод PaintDx и тоже появляется ошибка: "В экземпляре объекта не задана ссылка на объект". Работаю в системе Windows XP, на Vist'е все работает.
Приложение: Переключить в обычный режим- public class MyDirX
- {
- private Device dev = null;
- public Form Prnt = null;
-
- public void InitGraphics()
- {
- try
- {
- PresentParameters presParam = new PresentParameters();
- presParam.Windowed = true;
- presParam.SwapEffect = SwapEffect.Discard;
- presParam.EnableAutoDepthStencil = true;
- presParam.AutoDepthStencilFormat = DepthFormat.D16;
- dev = new Device(0, DeviceType.Hardware, Prnt, CreateFlags.SoftwareVertexProcessing,
presParam);
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
-
- }
-
- public void PaintDx()
- {
- try
- {
- dev.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
-
- CustomVertex.TransformedColored[] verts = new CustomVertex.TransformedColored[3];
- verts[0].Position = (new Vector4(Prnt.Width / 2.0f, 50.0f, 0.5f, 1.0f));
- verts[0].Color = System.Drawing.Color.Red.ToArgb();
- verts[1].Position = (new Vector4(Prnt.Width - (Prnt.Width / 5.0f), Prnt.Height -
(Prnt.Height / 5.0f), 0.5f, 1.0f));
- verts[1].Color = System.Drawing.Color.Yellow.ToArgb();
- verts[2].Position = (new Vector4(Prnt.Width / 5.0f, Prnt.Height - (Prnt.Height /
5.0f), 0.5f, 1.0f));
- verts[2].Color = System.Drawing.Color.Green.ToArgb();
-
- dev.BeginScene();
- dev.VertexFormat = CustomVertex.TransformedColored.Format;
- dev.DrawUserPrimitives(PrimitiveType.TriangleList, 1, verts);
- dev.EndScene();
- dev.Present();
- Prnt.Invalidate();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- }
Примечание #1 (6 декабря 2010, 21:12): Делаю на Managed DirectX с использованием Microsoft.DirectX и Microsoft.DirectX.Direct3D
 |
Вопрос задал: Евгений Eklmn (статус: Посетитель)
Вопрос отправлен: 6 декабря 2010, 21:05
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: AlexMPEI
Здравствуйте, Трофимов Евгений!
А где создание экземпляра Form Prnt?? мне кажется поэтому и ошибки
 |
Ответ отправил: AlexMPEI (статус: 1-ый класс)
Время отправки: 6 декабря 2010, 23:13
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 11 декабря 2010, 17:55; участников в обсуждении: 3.
|
AlexMPEI (статус: 1-ый класс), 6 декабря 2010, 23:22 [#1]:
видимо фишка - ответ прямо из письма не работает - я вижу что-то совершенно нечитаемое.
+ почему не сделать автологин, когда я перехожу по ссылке из присланного мне письма, нажав переход на страницу мини форума???
Теперь собственно ответ: где создание экземпляра Form Prnt?? Мне кажется в этом ошибка. посмотри в дебагере на какой строке вылетает и какое состояние переменных при этом.
|
|
Ерёмин А.А. (статус: *Администратор), 7 декабря 2010, 09:32 [#2]:
AlexMPEI: смотря через что отправлять. Письма в win-1251, так что посылать ответ в юникоде браузер никто не просил.
А вообще, все замечания и предложения оставляйте на форуме.
|
|
Евгений Eklmn (статус: Посетитель), 7 декабря 2010, 19:05 [#3]:
Да все инициализировано, вроде. Вот код процедуры создания главной формы, в нем и задается Prnt
public DxForm()
{
InitializeComponent();
this.SetStyle(ControlStyles.Opaque | ControlStyles.AllPaintingInWmPaint, true);
this.UpdateStyles();
dx = new MyDirX();
dx.Prnt = this;
dx.InitGraphics();
}
DirectX самый новый(версия 9.0с) - через DirectX WedInstall проверял. Вылетает на 15 строке.
Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория)
|
|
Евгений Eklmn (статус: Посетитель), 11 декабря 2010, 17:55 [#4]:
Разобрался проблема, все же была в DirectX. Пришлось переустановить его.
Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория)
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|