Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

BitBlt - где косяк? [D7, WinXP]


Страницы:   1 2

evil_mike ©   (2008-07-15 14:25:00) 

Доброго времени суток.
У меня следующий вопрос.

procedure drawbg(draw:string);
var n,i:integer;
   cursorpos : tpoint;
begin
getcursorpos(cursorpos);

if draw='tex' then
begin
 for n:=0 to mapobjectnumber-1 do model[n].draw;
end;

if draw='color' then
begin
 for n:=0 to mapobjectnumber-1 do model[n].drawcoloured(n,n,n);
 BitBlt(colormap.Canvas.Handle, 0, 0, 32, 32, wglGetCurrentDC, cursorpos.x , cursorpos.y, SRCCOPY)=true then exit;
end;

end;

В первом условии объекты рисуются с текстурами, во втором - цветом. По отдельности они работают отлично. Но если я сначала рисую в цвете, а потом с текстурой - в colormap оказывается изображение с текстурой..кто в курсе, почему так?


Renegat   (2008-07-15 21:03:00) [21]

упс, опоздал. Что ж, при такой постановке вопроса картина меняется. Очевидно, что проблема - не в коде, что ты привёл. (И, кстати, было бы неплохо передавать параметр не строкой, а числом - так намного быстрее, плюс к тому проверка на верный вызов BitBLT не нужна совсем - так или иначе будет выполнен выход из процедуры)


Renegat   (2008-07-15 20:59:00) [22]

> [0] evil_mike   (15.07.08 14:25)
> [3] evil_mike   (15.07.08 20:13)

Мммда. Судя по п0стам, трава была что надо %)
Попробую включить телепатор:

итак, ты воспроизводишь на некоем DC 3D-графику. С помощью OpenGL. А потом куда-то коприуешь нарисованное в зависимости от положения курсора. Вопрос - куда и зачем? Озвучь задачу.

++ по сабжу:
> Но если я сначала рисую в цвете, а потом с текстурой - в
> colormap оказывается изображение с текстурой..кто в курсе,
> почему так?

Именно потому что ты сначала рисуешь некий многоугольник цветом, а потом на этом же месте перерисовываешь его же, но только текстурированным. Вот он у тебя и затирает то что было нарисовано ранее.

пшшш..... всё, телепатор сгорел =)


evil_mike   (2008-07-15 20:55:00) [23]

Опишу без кода. Есть два варианта отрисовки. Первая - с текстурами в текущем контексте. Вторая - цветом (без текстур) в текущем контексте + она копируется на канвас битмапа. Так вот, если в основном цикле я сначала рисую в цвете, а потом с текестурами - то на канвасе оказывается картинка с текстурами. Вопрос: как это может быть, если отрисовка с текстурами и БитБлт вообще нигде не связаны?


Омлет   (2008-07-15 20:48:00) [24]

Вообще, конечно, я ничерта не понял ни в коде, ни в задаче )


Омлет   (2008-07-15 20:47:00) [25]

А какой смысл в сравнении BitBlt c true?
Он просто возвращает ненулевое значение при успешной отрисовке. А я еще не видел случая, чтобы отрисовка бала не успешной ))

И в том месте, где у тебя > if draw='tex' then > там нет BitBlt. Может поэтому для tex не отрисовывается?)


evil_mike   (2008-07-15 20:13:00) [26]

{RASkov}
Не понимаю..в основном цикле у меня идет
drawbg('color');
drawbg('tex');
А колормап заполнятеся ТОЛЬКО в drawbg('color'); , так каким образом он может потом снова перерисоваться?


{RASkov}   (2008-07-15 19:24:00) [27]

> [0] evil_mike   (15.07.08 14:25)

> , SRCCOPY

> Но если я сначала рисую в цвете, а потом с текстурой- в
> colormap оказывается изображение с текстурой..кто в курсе,
> почему так?

Потому что потом с текстурой.

Давай соберись и "спроси вопрос" :)
А если решаешься код(кусок) показывать, то показывай весь(кусок), а не в торопях набранный тут на форуме...


evil_mike   (2008-07-15 14:26:00) [28]

Упс, виноват. Там ifBitBlt(colormap.Canvas.Handle... Не скопировалось почему-то.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо