forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   DirectX и C++ (http://forum.boolean.name/showthread.php?t=14481)

s16s 08.05.2011 14:26

Ответ: DirectX и C++
 
Вот создаю новую поверхность

//__________________________________________hero
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlags=DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;
ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;
ddsd.dwHeight = 128;
ddsd.dwWidth = 742;
lpdd->CreateSurface(&ddsd, &pHero, NULL);
//___________________________________________

А функцию загрузки из файла я списал из самоучителя.

HolyDel 08.05.2011 14:27

Ответ: DirectX и C++
 
pHero - здесь точно валидные данные?

s16s 08.05.2011 14:32

Ответ: DirectX и C++
 
Да. Это вот этот тип LPDIRECTDRAWSURFACE7

s16s 09.05.2011 14:46

Ответ: DirectX и C++
 
Проблема как оказалось не в коде. Я сохранил картинку с сжатием, и в результате отображение происходило с глюками.

s16s 09.05.2011 23:26

Ответ: DirectX и C++
 
Вроде разобрался с DirectDraw. Но теперь проблема в DirectInput.

На строчке lpdikey->SetDataFormat(&c_dfDIKeyboard); выдаёт вот такую ошибку на стадии сборки:

dinput.lib(dilib2.obj) : fatal error LNK1103 : debugging information corrupt; recompile module Error executing link.exe.

Кто нибудь помогите.

s16s 10.05.2011 21:26

Ответ: DirectX и C++
 
Ну, сам спрашиваю, сам и ответы ищу.

Проблема была в том, что в папке было две либы: dinput.lib и dinput8.lib.
Компилятор ругался на dinput.lib, и я переместил эту либу из папки. Почему-то это помогло.

616}[aKeP 15.05.2011 21:13

Ответ: DirectX и C++
 
Люди помогите, проблемка. Не могу понять почему, когда задаю значения цвета материала в DirectX, он принемает значения и округляет их, тоесть я не могу задать цвет.

l.Diffuse.r=1.0f;
l.Diffuse.g=1.0f;
l.Diffuse.b=1.0f;

l.Ambient.r=0.4f;
l.Ambient.g=0.5f;
l.Ambient.b=0.0f;

Получаеться та часть объекта, что не освещается, ярко желтого цвета, как будто я задал значения.

l.Ambient.r=1.0f;
l.Ambient.g=1.0f;
l.Ambient.b=0.0f;


Кто знает в чем проблема?

Reizel 18.05.2011 13:36

Ответ: DirectX и C++
 
Вложений: 1
Создаю куб. Делаю вершинный буфер, в котором 8 вершин. ПОтом индексный буфер, в нем все 12 треугольников.
Куб рисуется верно, но при вращении наблюдается фэйл (exe в аттаче)
Автор самоучителя создавал для каждой стороны куба по 4 вершины, а я решил сэкономить.

Кто знает, в чем фэйл?

Nex 18.05.2011 13:41

Ответ: DirectX и C++
 
Цитата:

а я решил сэкономить
Видимо в этом. Наверно где то не разобрался и не учел отсутствие 4 вершин...

falcon 18.05.2011 13:53

Ответ: DirectX и C++
 
если я прально понял "фэйл", то проблема в неправильном обходе вершин.
правь индексный буфер.

p.s. если у тебя 4 вершины, то потом, когда у каждой вершины будет ещё и нормаль, увидишь ещё один занимательный "фэйл".

HolyDel 18.05.2011 17:56

Ответ: DirectX и C++
 
Цитата:

Кто знает, в чем фэйл?
в Z-тесте ясен пень! точнее в его отсутсвии

Цитата:

SetRenderState(D3DRS_ZENABLE ,D3DZB_TRUE);
SetRenderState(D3DRS_ZWRITEENABLE ,true);
и да - на вершинах не экономь
пойдут нормали и текстурные координаты и придет твоей экономии фейлец.

616}[aKeP 18.05.2011 19:00

Ответ: DirectX и C++
 
А про маю проблемку кто-нибудь, что-нибудь знает!

HolyDel 18.05.2011 20:20

Ответ: DirectX и C++
 
616}[aKeP ну ты же ничего не сказал. надо код показать или ексешник хотя-бы
шейдеры там которыми рисуешь
или там настройки материала еще

может ты геометрию с аддиативны блендингом 15 разв одно место рисуешь?

Reizel 19.05.2011 10:29

Ответ: DirectX и C++
 
C кубом разобрался. Дело оказалось в отсутствии Z-буфера, отсечения и согласованности вершин (или сторон?).
Теперь другой вопрос.
У меня 2 куба. Один позади другого. Камера вращается вокруг них. Если вызывать 2 раза DrawPrimitive, они будут рисоваться поверх друг друга, или при определенных обстоятельствах задний будет перекрывать передний?

Mr_F_ 19.05.2011 14:02

Ответ: DirectX и C++
 
ну zbuffer и нужен чтобы осуществлять проверку находится ли глубина рисуемого пикселя за глубиной уже отрисованных, если да, то не рисуется, если нет, то рисуется.
2 куба правильно загородят друг друга как их не рисуй.
правда лучше рисовать сначала передний, т.к. на пиксели, которые загородятся им у заднего, не надо будет считать шейдер/делать выборки.
такая сортировка может давать нехилый прирост, я рендерил лес когда - без сортировки было около 8 фпс (сотни тысяч деревьев), с сортировкой - 40.
а если объекты должны быть полупрозрачными то их по-любому придётся сортировать наоборот от задних к передним.


Часовой пояс GMT +4, время: 13:29.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot