Ответ: 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); //___________________________________________ А функцию загрузки из файла я списал из самоучителя. |
Ответ: DirectX и C++
pHero - здесь точно валидные данные?
|
Ответ: DirectX и C++
Да. Это вот этот тип LPDIRECTDRAWSURFACE7
|
Ответ: DirectX и C++
Проблема как оказалось не в коде. Я сохранил картинку с сжатием, и в результате отображение происходило с глюками.
|
Ответ: DirectX и C++
Вроде разобрался с DirectDraw. Но теперь проблема в DirectInput.
На строчке lpdikey->SetDataFormat(&c_dfDIKeyboard); выдаёт вот такую ошибку на стадии сборки: dinput.lib(dilib2.obj) : fatal error LNK1103 : debugging information corrupt; recompile module Error executing link.exe. Кто нибудь помогите. |
Ответ: DirectX и C++
Ну, сам спрашиваю, сам и ответы ищу.
Проблема была в том, что в папке было две либы: dinput.lib и dinput8.lib. Компилятор ругался на dinput.lib, и я переместил эту либу из папки. Почему-то это помогло. |
Ответ: 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; Кто знает в чем проблема? |
Ответ: DirectX и C++
Вложений: 1
Создаю куб. Делаю вершинный буфер, в котором 8 вершин. ПОтом индексный буфер, в нем все 12 треугольников.
Куб рисуется верно, но при вращении наблюдается фэйл (exe в аттаче) Автор самоучителя создавал для каждой стороны куба по 4 вершины, а я решил сэкономить. Кто знает, в чем фэйл? |
Ответ: DirectX и C++
Цитата:
|
Ответ: DirectX и C++
если я прально понял "фэйл", то проблема в неправильном обходе вершин.
правь индексный буфер. p.s. если у тебя 4 вершины, то потом, когда у каждой вершины будет ещё и нормаль, увидишь ещё один занимательный "фэйл". |
Ответ: DirectX и C++
Цитата:
Цитата:
пойдут нормали и текстурные координаты и придет твоей экономии фейлец. |
Ответ: DirectX и C++
А про маю проблемку кто-нибудь, что-нибудь знает!
|
Ответ: DirectX и C++
616}[aKeP ну ты же ничего не сказал. надо код показать или ексешник хотя-бы
шейдеры там которыми рисуешь или там настройки материала еще может ты геометрию с аддиативны блендингом 15 разв одно место рисуешь? |
Ответ: DirectX и C++
C кубом разобрался. Дело оказалось в отсутствии Z-буфера, отсечения и согласованности вершин (или сторон?).
Теперь другой вопрос. У меня 2 куба. Один позади другого. Камера вращается вокруг них. Если вызывать 2 раза DrawPrimitive, они будут рисоваться поверх друг друга, или при определенных обстоятельствах задний будет перекрывать передний? |
Ответ: DirectX и C++
ну zbuffer и нужен чтобы осуществлять проверку находится ли глубина рисуемого пикселя за глубиной уже отрисованных, если да, то не рисуется, если нет, то рисуется.
2 куба правильно загородят друг друга как их не рисуй. правда лучше рисовать сначала передний, т.к. на пиксели, которые загородятся им у заднего, не надо будет считать шейдер/делать выборки. такая сортировка может давать нехилый прирост, я рендерил лес когда - без сортировки было около 8 фпс (сотни тысяч деревьев), с сортировкой - 40. а если объекты должны быть полупрозрачными то их по-любому придётся сортировать наоборот от задних к передним. |
Часовой пояс GMT +4, время: 13:29. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot