Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.056 c
1-79742
Юлия
2004-02-11 07:45
2004.02.25
Как удалить файлы?


1-79839
raptorus
2004-02-12 15:59
2004.02.25
Подскажите компонент, алгоритм парсинга XML для русских букв?


14-80128
ИМХО
2004-02-01 02:20
2004.02.25
Сколько нот: 7 или 14


14-80114
mfender
2004-02-03 05:46
2004.02.25
Домены. Опять реорганизация?


14-80274
iNew
2004-02-04 04:57
2004.02.25
Автоматическое подключение сетевых дисков.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский