Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Newbie.DirectX

Newbie.DirectX

Страницы: 1 2 3 Следующая »
восставший из прахаПользовательwww12 дек. 201711:19#0
Не прошло и три года, как добрался я до классов в С++(и сразу почувствовал насколько это удобно).  В смысле их применение. И всё шло хорошо. Пока я использовал их для загрузки текстур.Ситуация. А решил я в качестве опыта попробовать добавить к классу текстур координаты объекта на который текстура накладываются, и чоб не мучатся сразу сделал цельный вертексный буффер. Шоб его создать и заполнить, даю функции имя девайса и координаты...
+ Показать

Итак, я создаю вертекс буффер в классе
  
//VertexQuad -структура содержащая координаты 6 вертексов. 

LPDIRECT3DVERTEXBUFFER9& textr::initG (LPDIRECT3DDEVICE9 d, VertexQuad* vq)
   {
      VOID *pp;
      d->CreateVertexBuffer( sizeof(VertexQuad), 0, D3DFVF_VERTEXPOINT, D3DPOOL_MANAGED, &vb0, NULL );      
       vb0->Lock( 0, sizeof(VertexQuad), (void**)&pp, 0 )
      memcpy(pp, vq, sizeof(VertexQuad) );
      vb0->Unlock();
      return vb0;
   };

Тот же самый код я использую в теле main и всё работает. Тут работает всё. (То есть буфер создаётся. Координаты и девайс передаются. Memcpy копирует. И никаких ошибок.) Но вертекстный буффер остаётся пустым...А значит я не понимаю чего то либо в классах, либо  в указателях, либо ни в том, ни в другом. Вопрос, господа эксперты, что мне сделать, чтобы этот код стал работать в соответствии с моими ожиданиями.

Правка: 12 дек. 2017 12:25

gamedevforПостоялецwww12 дек. 201713:27#1
memcpy(pp, vq, VertexCount * sizeof(VertexQuad) );
восставший из прахаПользовательwww12 дек. 201713:39#2
gamedevfor
пробовал увеличивать размер - нифига(хотя VertexQuad  и так содержит координаты всех Vertex Point, а значит и размер имеет соответствующий).
gamedevforПостоялецwww12 дек. 201713:46#3
восставший из праха
> VertexQuad и так содержит координаты всех Vertex Point

Это не правильно, нужно по раздельности: потому что кроме координат нужно будет передавать еще и текстурные координаты, и другую информацию.

восставший из прахаПользовательwww12 дек. 201713:51#4
gamedevfor
он и содержит и координаты, и цвет, и текстурные координаты)
gamedevforПостоялецwww12 дек. 201713:55#5
восставший из праха
Там надо четко соблюдать выравнивание и OFFSET-ы в памяти, а за этим легче следить когда всё по раздельности.
восставший из прахаПользовательwww12 дек. 201714:02#6
gamedevfor
я более того, скажу, что делать как  я сделал вообще не надо, по многим причинам(в смысле забивать вертекс буффер в класс, объектов которого предполагается достаточно большое количество.).  Но видите ли, раз уж я так сделал, и оно сделалось, то в качестве эксперимента хотелось бы уже довести до рабочего состояния, для очередного понимания С++.
Заметка...решил, ещё раз проверить доступность координат. Создал float в классе, memcpy туда координату X первого вертекса - скопировалось правильно...

Правка: 12 дек. 2017 14:08

gamedevforПостоялецwww12 дек. 201714:11#7
восставший из праха
Делай по науке и всё будет работать. )))
восставший из прахаПользовательwww12 дек. 201714:33#8
gamedevfor
И всё же сабж не понятен. Почему не работает данный код. Несмотря, на то что все работает по отдельности. И хоть бы ошибку выдал...
gamedevforПостоялецwww12 дек. 201715:09#9
восставший из праха
Так ты ж там куралесишь быдлокод вот и не работает.
восставший из прахаПользовательwww12 дек. 201715:47#10
gamedevfor
> Так ты ж там куралесишь быдлокод вот и не работает.
а может вам стоит покинуть эту тему, коли вам нечего сказать по сути вопроса. Я не против флуда, но в соответствущих темах, а тут всё же задан вопрос по коду.
gamedevforПостоялецwww12 дек. 201716:06#11
восставший из праха
тебе ж посоветовали переписать быдлокод и сам ты как согласен с тем что у тебя быдлокод.
Так зачем кому то искать ошибки в быдлокоде?
восставший из прахаПользовательwww12 дек. 201716:19#12
+ Показать

Тем не менее вопрос всё ещё стоит.
gamedevforПостоялецwww12 дек. 201716:23#13
восставший из праха
Ну жди с моря погоды, ты давно уже мог бы всё переписать и привести код в порядок.
восставший из прахаПользовательwww12 дек. 201716:32#14
+ Показать

Тем не менее вопрос всё ещё стоит. Причём я уверен, что ответ прост, как три рубля.

Правка: 12 дек. 2017 16:33

Страницы: 1 2 3 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр