Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2013, 14:28   #1
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию Present у LPDIRECT3DSWAPCHAIN9 приводит к ошибке

Кратко:
Есть главное окно приложения и есть второе окно приложения. Рисую в главное и во второстепенное окно. В главное как обычно, во второстепенное swapchain'ом. Код примерно такой:
Код:
LPDIRECT3DSURFACE9					mainSurface;
LPDIRECT3DSURFACE9					mainDepth;

LPDIRECT3DSURFACE9					target;
LPDIRECT3DSURFACE9					depth;


while (стопитсот повторений) {
	device->SetRenderTarget(0, mainSurface);
	device->SetDepthStencilSurface(mainDepth);
	device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,0.0f), 1.0f, 0);
	device->BeginScene();

	...//очень много индусского кода по рисованию в главный сюрфейс, который отображу на главное окно

	device->GetRenderTarget(0, &mainSurface);
	device->GetDepthStencilSurface(&mainDepth);


	device->SetRenderTarget(0, target);
	device->SetDepthStencilSurface(depth);
			
	device->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,0.0f), 1.0f, 0);

	...//нарисовал немного треугольников (тысяч 15 :) ) во второстепенный сюрфейс, который отображу на второе окно приложения

	device->SetRenderTarget(0, mainSurface);
	device->SetDepthStencilSurface(mainDepth);

	swapChain->Present(NULL, NULL, hWnd, NULL, 0);//ОШИБКА ТУТ
					
	...//очень много индусского кода по продолжению рисования в главный сюрфейс

	device->EndScene();
	device->Present(0,0,0,0);
}
и вот на строчке "ОШИБКА ТУТ" возникает ошибка "Out of video memory"
причем ошибка возникает не всегда. иногда приложение работает очень долго и все ок, иногда прям при запуске.
Kukurudza вне форума Ответить с цитированием
Старый 20.05.2013, 13:14   #2
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

Проблема решена. Было вот что:
приложение 32х разрядное. оно использовало примерно 1.5гигабайта оперативной памяти и примерно 500 метров видеопамяти. итого максимальные 2 гига. после расширения адресного пространства (http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx) до 4х гигабайт ошибка ушла.
Kukurudza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переключение DataGridView в редактирование приводит к фаталу! Гаврилов C# (си шарп) 0 29.07.2012 12:56
InvalidateRect не приводит к сообщениям WM_PAINT Jugger Win Api 4 21.05.2012 18:07