Главная страница
    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.033 c
4-80357
FeRR
2003-12-16 12:34
2004.02.25
SendMessage + WM_KEYDOWN


14-80279
mfender
2004-02-04 10:03
2004.02.25
InterBase Manual


14-80233
Юрий Зотов
2004-01-15 21:06
2004.02.25
Наши идут!


3-79541
Максим
2004-02-03 12:04
2004.02.25
IBDatabase


6-80050
smu
2003-12-22 10:10
2004.02.25
Как TNMSMTP связать с ProgressBar?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский