Форум: "Потрепаться";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
ВнизПриложение и система Найти похожие ветки
← →
Кирилл © (2004-11-12 15:14) [0]У меня есть несколько вопросов на эту тему:
1. Приложение, откомпилированное на Win98, некоректно работает на ХР, и наоборот. Как сделать, чтобы приложение нормально работало на всех виндусах?
2. Полноэкраннное приложение, написанное с помощью DirectX, нормально работает на 98, а на ХР происходит мельтешение и просвечивает экран, даже если откомпилировано на ХР. Почему?
3. Правда ли, что DirectX предназначен для написания приложений только под видеокарты nVidia, а OpenGL - под ATI?
Пожалуйста, помогите разобраться.
← →
Ega23 © (2004-11-12 15:18) [1]1. Приложение, откомпилированное на Win98, некоректно работает на ХР, и наоборот. Как сделать, чтобы приложение нормально работало на всех виндусах?
Боюсь, что в общем случае это невозможно, т.к. ядра систем разные.
← →
VMcL © (2004-11-12 16:01) [2]>>Кирилл © (12.11.04 15:14)
>2. Полноэкраннное приложение, написанное с помощью DirectX, нормально работает на 98, а на ХР происходит мельтешение и просвечивает экран, даже если откомпилировано на ХР. Почему?
Думаю, что без кода сложно будет что-либо подсказать.
>3. Правда ли, что DirectX предназначен для написания приложений только под видеокарты nVidia, а OpenGL - под ATI?
Нет.
>>Ega23 © (12.11.04 15:18) [1]
Я бы сказал, что как раз наоборот: в общем случае программа должна на всех Win32 работать одинаково, кроме случаев, когда использует всякие изощрения, применимые в какой-либо конретной версии Win.
← →
Ega23 © (2004-11-12 16:07) [3]Я бы сказал, что как раз наоборот: в общем случае программа должна на всех Win32 работать одинаково, кроме случаев, когда использует всякие изощрения, применимые в какой-либо конретной версии Win.
Дык в том-то и дело, что Вин32 в НТ и 98 - разные. Не так, чтобы очень сильно отличались, но я отличия встречал. Про драйвера вообще молчу. Про ДиректХ - не знаю, но подозреваю, что платформо-зависим. Помнится, когда-то давно устанавливал ДиректХ 5.0 для НТ - ещё тот гемор был.
← →
REA (2004-11-12 16:32) [4]>Правда ли, что DirectX предназначен для написания приложений только под видеокарты nVidia, а OpenGL - под ATI?
Это сильно. Исходя из этой логики BDE заточено под винчестеры Maxtor, а ADO оптимизировано для Seagate.
← →
Anatoly Podgoretsky © (2004-11-12 17:11) [5]Ega23 © (12.11.04 15:18) [1]
А причем тут ядро, читай внимательно, откомпилированое на 98!!!, то есть тоже приложение, но откомпилированое на ХР работает.
← →
begin...end © (2004-11-12 17:24) [6]Anatoly Podgoretsky © (12.11.04 17:11) [5]
> А причем тут ядро, читай внимательно, откомпилированое
> на 98!!!, то есть тоже приложение, но откомпилированое
> на ХР работает.
Читаем внимательно [0], и не находим в п.1 утверждения о том, что приложение, откомпилированное на XP, корректно работает на 98. Более того, написано: "Приложение, откомпилированное на Win98, некоректно работает на ХР, и наоборот.". "И наоборот" - в данном контексте я это понимаю так: "Приложение, откомпилированное на ХР, некорректно работает на Win98". А Вы?
← →
Anatoly Podgoretsky © (2004-11-12 17:36) [7]Привожу полную цитату
1. Приложение, откомпилированное на Win98, некоректно работает на ХР, и наоборот. К
← →
Anatoly Podgoretsky © (2004-11-12 17:36) [8]1. Приложение, откомпилированное на Win98, некоректно работает на ХР, и наоборот.
← →
begin...end © (2004-11-12 17:39) [9]Anatoly Podgoretsky © (12.11.04 17:36) [8]
И? Разве это не означает, что приложение, откомпилированное на XP, некорректно работает на Win98?
← →
Кирилл © (2004-11-12 18:08) [10]
> Думаю, что без кода сложно будет что-либо подсказать.
Вот код:Uses Direct3D;
...
Var
FD3D : IDIRECT3D8;
FD3DDevice : IDIRECT3DDEVICE8;
procedure Form1.InitD3D;
const
fmtFullscreenArray : Array [0..4] of DWORD =
(D3DFMT_R5G6B5,
D3DFMT_X1R5G5B5,
D3DFMT_A1R5G5B5,
D3DFMT_X8R8G8B8,
D3DFMT_A8R8G8B8);
var
iFmt : Integer;
FD3DfmtFullscreen : DWORD;
ScreenWidth, ScreenHeight : Integer;
d3dpp : TD3DPRESENT_PARAMETERS;
begin
FD3D := Direct3DCreate8(D3D_SDK_VERSION);
for iFmt := 0 to High(fmtFullscreenArray) do begin
if( SUCCEEDED( FD3D.CheckDeviceType( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
fmtFullscreenArray[iFmt], fmtFullscreenArray[iFmt], FALSE ) ) )
then begin
FD3DfmtFullscreen := fmtFullscreenArray[iFmt];
Break;
end
end;
ScreenWidth := GetSystemMetrics(SM_CXSCREEN);
ScreenHeight := GetSystemMetrics(SM_CYSCREEN);
ZeroMemory(@d3dpp, SizeOf(d3dpp));
with d3dpp do begin
Windowed := False;
SwapEffect := D3DSWAPEFFECT_DISCARD;
BackBufferWidth := ScreenWidth;
BackBufferHeight := ScreenHeight;
BackBufferFormat := FD3DfmtFullscreen;
end;
FD3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Handle,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
d3dpp, FD3DDevice);
end;
procedure Form1.FormCreate(Sender: TObject);
begin
InitD3D;
end;
P.S. Пожалуста разберитесь, очень нужно!
← →
Кирилл © (2004-11-13 16:38) [11]Я всё же ещё раз спрошу: почему это[10] не работает на ХР??
Неужели никто из великих мастеров не может помочь чайнику?
← →
Anatoly Podgoretsky © (2004-11-13 17:04) [12]begin...end © (12.11.04 17:39) [9]
Следует, это вторая часть цитаты "и наоборот", но хватает и первой, "откомпилированное на Win98, некоректно работает на ХР"
← →
Кирилл © (2004-11-13 18:46) [13]
> Anatoly Podgoretsky © (13.11.04 17:04) [12]
Приложение, откомпилированное на Win98, некоректно работает на ХР, а приложение, откомпилированное на ХР, некоректно работает на Win98 (но не во всех случаях).
Однако, мне бы со вторым вопросом разобраться, он меня особенно интересует...
← →
begin...end © (2004-11-13 20:35) [14]Anatoly Podgoretsky © (13.11.04 17:04) [12]
Мы с Вами, наверное, говорим на разных языках.
← →
Anatoly Podgoretsky © (2004-11-13 21:00) [15]Зато я говорю с автором на одном языке, смотри его разъяснение за номером 11
← →
begin...end © (2004-11-13 21:22) [16]Anatoly Podgoretsky © (13.11.04 21:00) [15]
Вы с ним говорите на разных языках, см. его разъяснение за номером 13.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.034 c