Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.07.2009
Сообщений: 70
1

Зарисовка окна в DirectX 9 и C++

23.07.2010, 15:15. Показов 1155. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
иницыализація окна проходит успешно ,но при объявлении initialDirect3D и RenderingDirect3D (ln 91-92) компилятор ругается разными выражениями типа *Run-Time Check failure #3-The varable Display... *,* Unhandler Exception at 0x4fda0b48...* bи т. д.
В чем проблема ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
 #include <windows.h>
#include <d3d9.h>
#pragma comment (lib,"d3d9.lib")
 
HINSTANCE hinst;
HWND wndHandle;
 
bool initWindow(HINSTANCE hInstance);
 
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
 
 
LPDIRECT3D9 pDirect3D=NULL; 
IDirect3DDevice9* pDirect3DDevice=NULL;
void RenderingDirect3D();
 HRESULT initialDirect3D(HWND hwnd);
 
 
 
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR IpCmdLine,int nShowCmd)
{
 
      
        if(!initWindow(hInstance))
                return false;
        MSG msg;
        
        ZeroMemory(&msg,sizeof(msg));
 
 
 
                while(GetMessage(&msg,0,0,0))
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
            }
 
 
 //WS_OVERLAPPEDWINDOWS|WS_VISIBLE,300,150,500,400,NULL,NULL,hinstance,NULL);
        return msg.wParam;
 
}
 
bool initWindow(HINSTANCE hInstance)
{
  WNDCLASSEX wcex;
  wcex.cbSize =sizeof(WNDCLASSEX);
  wcex.style=CS_HREDRAW|CS_VREDRAW;
  wcex.lpfnWndProc=(WNDPROC)WndProc;
  wcex.cbClsExtra=0;
  wcex.cbWndExtra=0;
  wcex.hInstance=hInstance;
  wcex.hIcon=0;
  wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
  wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  wcex.lpszMenuName =NULL;
  wcex.lpszClassName=L"DirectXExample";
  wcex.hIconSm=0;
  RegisterClassEx(&wcex);
 
 
  wndHandle=CreateWindow(
          L"DirectXExample",
          L"DirectXExample",
          WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT,
          CW_USEDEFAULT,
          640,
          480,
          NULL,
          NULL,
          hInstance,
          NULL);
  if(!wndHandle)
          return false;
  ShowWindow(wndHandle,SW_SHOW);
  UpdateWindow(wndHandle);
  return true;
  
}
 
 
 
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        switch(message)
        {
                case WM_PAINT:
               initialDirect3D( hWnd);
            RenderingDirect3D();
            ValidateRect(hWnd,NULL);
                    break;
                case WM_DESTROY:
                        {
                                PostQuitMessage(0);
                                return 0;
                
                        } break;
        
 
                        return DefWindowProc(hWnd, message, wParam, lParam);
 
        }   return (DefWindowProc(hWnd, message, wParam, lParam));
 
 //case WM_PAINT:
//initialDirect3D(HWND hwnd);
    // ValidateRect(hwnd,NULL);
        
        return 0;
}
 
 
 HRESULT initialDirect3D(HWND hwnd)
{
    if(NULL ==(pDirect3D=Direct3DCreate9(D3D_SDK_VERSION)))
        return E_FAIL;
    D3DDISPLAYMODE* Display;
 
    if (FAILED(pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,Display)))
        return E_FAIL;
    D3DPRESENT_PARAMETERS Direct3DParametr;
    ZeroMemory(&Direct3DParametr,sizeof(Direct3DParametr));
    Direct3DParametr.Windowed=TRUE;
     Direct3DParametr.SwapEffect=D3DSWAPEFFECT_DISCARD;
  Direct3DParametr.BackBufferFormat=  Direct3DParametr.BackBufferFormat;
 
    return E_FAIL;;
return S_OK ;
}
 
 
void RenderingDirect3D()
{
    //IDirect3DDevice9::Clear;
 
pDirect3DDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(25,25,0),1.0f,0);
pDirect3DDevice->BeginScene();
pDirect3DDevice->EndScene();
pDirect3DDevice->Present(NULL,NULL,NULL,NULL);
//return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2010, 15:15
Ответы с готовыми решениями:

Как рендерить из DirectX в какой - нибуть контейнер окна диалога?
Собственно вопрос в шапке, как мне рендерить 3d графику в какой - нибуть участок диалогового...

ZedGraph зарисовка области
Подскажите пожалуйста как можно зарисовать например область которая образуеться при пересечении...

Pen зарисовка штрихами
Вот мой фрагмент кода: pen2 = new Pen(Color.Black, 1); // карандаш для графика pen2.PenType =...

Зарисовка пикселя на Image
Как на image зарисовать пиксель на координатах x,y определённым цветом?

1
26 / 25 / 3
Регистрация: 19.03.2010
Сообщений: 57
30.07.2010, 19:03 2
Дык, не надо при отрисовке каждого кадра инициализировать D3D, это делается один раз при старте приложения
0
30.07.2010, 19:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2010, 19:03
Помогаю со студенческими работами здесь

Как получить HWND окна (виджета) в Qt для передачи его в DirectX ?
Салют! Есть ли возможность в кьюте получить этот злощастный HWND виндовый для дальнейшего рендера...

Зарисовка ячейки таблицы цветом
токо начал изучать JS и вот проблема нада серую ячейку зарисовать тем цветом на каком стоит курсор ...

Как сделать чтобы при изменении размера окна разрешение не менялось (DirectX 11)?
Здравствуйте. Я изучаю DirectX 11 и хотел бы узнать как мне в моей программе сделать так, чтобы при...

Отслеживание нажатие мышки в определенной части экрана и зарисовка объекта
на практике я пишу игру крестики нолики. Нарисовала через фотошоп клетки и вставила в программу с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru