Форум: "Media";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
ВнизOpenGL Найти похожие ветки
← →
Agent[007] (2003-10-10 11:07) [0]Подскажите PLZ, как можно наипростейшим образом нарисовать Фэйсы, а то в примерах как-то тяжело написано...
← →
BOA_KAA (2003-10-10 11:27) [1]В таком случае, батюшка, Вам нужно самым простейшим образом Битмап с Фейсом загрузить
← →
Agent[007] (2003-10-10 19:35) [2]Я имел в виду, что как создать простые TCamera, TScene bи какой-нибудь кубик...
← →
Agent[007] (2003-10-12 09:28) [3]Я немного разобрался, но:
1.Как наложить текстуру на объект, созданный методом glBegin()/glEnd?..
2.Как сделать, чтобы окно было над панелью задач?..
← →
Asteroid (2003-10-13 01:05) [4]> Agent[007] © (12.10.03 09:28) [3]
1. Сначала грузишь текстуру и получаешь ее ID (подробнее - в примерах, сейчас подробно не опишу). Затем:
glBindTexture( GL_TEXTURE_2D, TexID ); // TexID - ID текстуры
glBegin(..)
...
glTexCoord2f( u, v ); // задать текстурные координаты
glVertex3f( x, y, z ); // задать вершину
// и так много раз
...
glEnd();
glBindTexture( GL_TEXTURE_2D, 0 ); // снять текстуру
← →
Agent[007] (2003-10-13 08:07) [5]Тока как текстуру грузить?
Я пробовал без загрузки текстуры использовать glBindTexture, но он пишет, что такой функции нет...
← →
Landgraph (2003-10-13 10:16) [6]Такой функции по умолчанию нет. ее надо объявлять отдельно.
← →
Agent[007] (2003-10-13 10:36) [7]ты про БИНДТЕКСТУР или загрузку текстур и получение ИД ?
← →
Agent[007] (2003-10-13 14:14) [8]А можно другой вопрос?
1-Почему я делаю в TMain.Timer1Timer glTranslatef(0,0,-1), а объект не двигается(визуально), а чуть позже исчезает?
2-Как создать камеру, чтобы не мучаться с перемещением координатной системы?
← →
jeka911 (2003-10-14 15:25) [9]glbegin(gl_triangles);
glvertex3f(0,0,0);
glvertex3f(0,0,1);
glvertex3f(0,1,1);
glend;
glbegin(gl_quads);
glvertex3f(0,0,0);
glvertex3f(0,0,1);
glvertex3f(0,1,1);
glvertex3f(0,1,0);
glend;
а про текстуру, никто ничего не говорил.
← →
Darkwing (2003-10-16 22:51) [10]Где взял уже не помню, но мне помогло
unit ADraw;
interface
uses
Windows, OpenGL;
function LoadTexture(Filename: String; var Texture: GLuint; var pData: pointer): Boolean;
implementation
function gluBuild2DMipmaps(Target: GLenum; Components, Width, Height: GLint; Format, atype: GLenum; Data: Pointer): GLint; stdcall; external glu32;
procedure glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32;
procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;
procedure SwapRGB(data : Pointer; Size : Integer);
asm
mov ebx, eax
mov ecx, size
@@loop :
mov al,[ebx+0]
mov ah,[ebx+2]
mov [ebx+2],al
mov [ebx+0],ah
add ebx,3
dec ecx
jnz @@loop
end;
procedure LoadBitmap(Filename: String; out Width: Cardinal; out Height: Cardinal; out pData: Pointer);
var
FileHeader: TBITMAPFILEHEADER;
InfoHeader: TBITMAPINFOHEADER;
Palette: array of RGBQUAD;
BitmapFile: THandle;
BitmapLength: LongWord;
PaletteLength: LongWord;
ReadBytes: LongWord;
begin
BitmapFile := CreateFile(PChar(Filename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if (BitmapFile = INVALID_HANDLE_VALUE) then begin
MessageBox(0, PChar("Error opening" + Filename), PChar("BMP Unit"), MB_OK);
Exit;
end;
// Get header information
ReadFile(BitmapFile, FileHeader, SizeOf(FileHeader), ReadBytes, nil);
ReadFile(BitmapFile, InfoHeader, SizeOf(InfoHeader), ReadBytes, nil);
// Get palette
PaletteLength := InfoHeader.biClrUsed;
SetLength(Palette, PaletteLength);
ReadFile(BitmapFile, Palette, PaletteLength, ReadBytes, nil);
if (ReadBytes <> PaletteLength) then begin
MessageBox(0, PChar("Error reading palette"), PChar("BMP Unit"), MB_OK);
Exit;
end;
//
Width := InfoHeader.biWidth;
Height := InfoHeader.biHeight;
BitmapLength := InfoHeader.biSizeImage;
if BitmapLength = 0 then
BitmapLength := Width * Height * InfoHeader.biBitCount Div 8;
// Get the actual pixel data
GetMem(pData, BitmapLength);
ReadFile(BitmapFile, pData^, BitmapLength, ReadBytes, nil);
if (ReadBytes <> BitmapLength) then begin
MessageBox(0, PChar("Неверный формат BMP"), PChar("Файл не читается правильно"), MB_OK);
Exit;
end;
CloseHandle(BitmapFile);
// Bitmaps are stored BGR and not RGB, so swap the R and B bytes.
SwapRGB(pData, Width*Height);
end;
function LoadTexture(Filename: String; var Texture: GLuint; var pData: pointer): Boolean;
var
Width: LongWord;
Height: LongWord;
begin
pData :=nil;
LoadBitmap(Filename, Width, Height, pData);
if (Assigned(pData)) then
Result := True
else
begin
Result := False;
MessageBox(0, PChar("Не могу загрузить BMP" + filename), "Загрузка файла", MB_OK);
Halt(1);
end;
//glGenTextures(1, Texture);
//glBindTexture(GL_TEXTURE_2D, Texture);
//glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); {Texture blends with object background}
//glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); {Texture does NOT blend with object background}
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_NEAREST); { only first two can be used }
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); { all of the above can be used }
gluBuild2DMipmaps(GL_TEXTURE_2D, 4, Width, Height, GL_RGB, GL_UNSIGNED_BYTE, pData);
end;
end.
← →
Darkwing (2003-10-16 22:57) [11]1) использовать так
glNewList(FLOOR, GL_COMPILE);
LoadTexture("File.bmp",tex,d);
glBegin(GL_QUADS);
glTexCoord(0,0); glVertex3d(-a*1.1,-b,-c*1.1);
glTexCoord(0,6); glVertex3d(-a*1.1,-b,c*1.1);
glTexCoord(6,6); glVertex3d(a*1.1,-b,c*1.1);
glTexCoord(6,0); glVertex3d(a*1.1,-b,-c*1.1);
glEnd;
glEndList;
2) Камера отличная: gluLookAt
3) Если окно bsNone то никак не сможешь запихать его под панель задач
← →
INext (2003-10-24 13:56) [12]Нащет текстур, чтобы грузить текстуры с bmp,jpg,tga, заглянь на сайт www.sulaco.co.za , скачай какойто исходник, там увидишь юнит Textures с одной процедурой.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c