Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2012, 12:09   #11
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

так что куда еще писать?
Nikk[UA] вне форума Ответить с цитированием
Старый 11.06.2012, 18:25   #12
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Что и куда писать, Вам посоветовали.
Вы что-то сделали, но неправильно. Притом, никто не знает, что именно.
Мы не телепаты, где Вы в очередной раз ошиблись, не знаем.
s-andriano вне форума Ответить с цитированием
Старый 11.06.2012, 19:46   #13
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Вот вам код. Изображение map.bmp размером 1000х1000

Цитата:
unit MiningLife;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, GLKeyboard, ExtCtrls, StdCtrls, AppEvnts, dglopengl;

type
TForm1 = class(TForm)
Process: TTimer;
FPSTimer: TTimer;
ApplicationEvents1: TApplicationEvents;
procedure ProcessTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FPSTimerTimer(Sender: TObject);
procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
protected

public
end;


var
Form1: TForm1;
FPS, FullScreenX, FullScreenY: integer;
DC: HDC;
RC: HGLRC;
World : Array [0..999, 0..999, 0..3] of GLUbyte;


implementation

{$R *.dfm}



// - Full Screens Mod
//=================================== ==============
procedure FullScreenMode;
var
dm: TDEVMODE;
begin
Form1.Left := 0;
Form1.Top := 0;
Form1.Width := 800;
Form1.Height := 600;


ZeroMemory(@dm, sizeof(TDEVMODE));
dm.dmSize := sizeof(TDEVMODE);

FullScreenX := dm.dmPelsWidth;
FullScreenY := dm.dmPelsHeight;

dm.dmPelsWidth := Form1.Width;
dm.dmPelsHeight := Form1.Height;
dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettings(dm, 0);
end;



procedure ResumeScreenMode;
var
dm: TDEVMODE;
begin
ZeroMemory(@dm, sizeof(TDEVMODE));
dm.dmSize := sizeof(TDEVMODE);
dm.dmPelsWidth := FullScreenX;
dm.dmPelsHeight := FullScreenY;
dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettings(dm, 0);
end;
//=================================== ==============







// Render World
//=================================== ==============
procedure RendW;
begin
glRasterPos2f(-1, 1);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glDrawPixels(1000, 1000, GL_RGBA, GL_UNSIGNED_BYTE, @World);

end;
//=================================== ==============


procedure TForm1.ProcessTimer(Sender: TObject);
begin

if IsKeyDown(VK_ESCAPE) then
begin
ResumeScreenMode;
Form1.Close;
end;


end;

procedure TForm1.FormCreate(Sender: TObject);
var
i, j : Integer;
PixCol : TColor;
Bitmap : TBitmap;
begin
FullScreenMode();

DC := GetDC(Handle);
RC := CreateRenderingContext(Form1.Canvas .Handle,[opDoubleBuffered],32,24,0,0,0,0);


Bitmap := TBitmap.Create;
Bitmap.LoadFromFile ('map.bmp');
For i := 0 to 999 do
For j := 0 to 999 do begin
PixCol := Bitmap.Canvas.Pixels [j, i];
World[1000 - i - 1][j][0] := PixCol and $FF;
World[1000 - i - 1][j][1] := (PixCol and $FF00) shr 8;
World[1000 - i - 1][j][2] := (PixCol and $FF0000) shr 16;
end;
BitMap.FreeImage;

end;



procedure TForm1.FPSTimerTimer(Sender: TObject);
begin
Form1.Caption := 'FPS: ' + inttostr(FPS);
FPS := 0;
end;



procedure TForm1.ApplicationEvents1Idle(Sende r: TObject;
var Done: Boolean);
begin
ActivateRenderingContext(DC, RC);

RendW;

SwapBuffers(DC);
DeactivateRenderingContext;
FPS := FPS + 1;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DestroyRenderingContext(RC);
ResumeScreenMode;
end;

end.
Nikk[UA] вне форума Ответить с цитированием
Старый 11.06.2012, 22:58   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а байт прозрачности кто будет задавать?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.06.2012, 00:03   #15
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

можно пример. Я так понял нужно перевести, но как?
Nikk[UA] вне форума Ответить с цитированием
Старый 12.06.2012, 15:11   #16
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Ничего не гарантирую
Попробуйте:
Код:
World[1000 - i - 1][j][0] := PixCol and $FF;
World[1000 - i - 1][j][1] := (PixCol and $FF00) shr 8;
World[1000 - i - 1][j][2] := (PixCol and $FF0000) shr 16;
World[1000 - i - 1][j][3] := 255;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 12.06.2012, 15:33   #17
Chudik
 
Регистрация: 11.06.2012
Сообщений: 4
По умолчанию

BDA как с вами можно связаться?

Последний раз редактировалось Chudik; 12.06.2012 в 15:35.
Chudik вне форума Ответить с цитированием
Старый 12.06.2012, 18:03   #18
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

спс. Работает, но как я не менял значение альфа канала от 0 до 255 изображение рендерится одинаково. Тоесть на 255.

Как сделать чтобы оно было полупрозрачным?
Nikk[UA] вне форума Ответить с цитированием
Старый 12.06.2012, 18:13   #19
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Я что-то не обнаружил в коде вообще никакой настройки режима отображения. Она что, где-то в другом модуле?
Какие-нибудь glEnable...
s-andriano вне форума Ответить с цитированием
Старый 12.06.2012, 19:02   #20
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
Злость

пробовал glenable(gl_blend), но это ничего не дало. Я вообще немного в режиме смешивания не догоняю.
Nikk[UA] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL. Проекционные тени и их отрисовка на плоскости стен комнаты capta1n Помощь студентам 1 07.12.2011 19:48
Отрисовка ребер в OpenGL Xcopy Помощь студентам 0 14.05.2011 13:02
Отрисовка пикселей поверх всех окон TilerDerton Общие вопросы Delphi 4 29.09.2010 10:35
Отрисовка метафайла средствами OpenGL -=CHIP=- Мультимедиа в Delphi 3 20.09.2009 13:12
Отрисовка круга в OpenGl Oburec Мультимедиа в Delphi 1 04.07.2009 15:22