![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пропадает сфера
Qwertyk © (2005-05-10 16:16:00)Здравствуйте! Задавал этот вопрос с теме про небо. Все же решил вынести в оидельный топик :)
Значит ресую я сферу. Работает нормально, но как я вставляю модель, то сфера пропадает. Почему?
glPopMatrix;
Angle := 0.03;
glRotatef (Angle, 0.0, 0.0, 1.0);
glFogCoordfEXT(KFog);
glBindTexture(gl_texture_2d,Textures[texcount+1]);
glEnable (GL_BLEND);
glCallList(Inside);
glDisable (GL_BLEND);
glPushMatrix;
//После вставки нижестоящего кода появился такой баг
glPopMatrix;
MyMesh.Draw;
glPushMatrix;
Qwertyk (2005-05-11 16:09:00) [1]Ой блин .... Спасибо :)
Darth (2005-05-11 14:30:00) [2]glPopMatrix и glPushMatrix везде местами поменяй
П7 (2005-05-11 01:11:00) [3]Почитай подробнее про glPopMatrix и glPushMatrix и поймёшь, где ты ошибся (:
Qwertyk (2005-05-10 22:12:00) [4]П7 (10.05.05 21:49) [5]
А если по делу :)
П7 (2005-05-10 21:49:00) [5]
> хм © (10.05.05 20:17) [3]
5 баллов!!! (:
Qwertyk (2005-05-10 20:50:00) [6]Вот основной код
procedure OnRender();
var
i,j:integer;
t:tvector;
t1:longint;
begin
glBindTexture(gl_texture_2d,Textures[1]);
{Ландшафт}
for j:=0 to H-2 do
begin
glBegin(GL_TRIANGLE_STRIP);
for i:=0 to W-1 do
begin
glTexCoord2f(i/W,1-j/H);
with MapArr[i,j] do glVertex3f(x,y,z);
glTexCoord2f(i/W,1-(j+1)/H);
with MapArr[i,j+1] do glVertex3f(x,y,z);
end;
glEnd;
end;
KFog:=KFog+0.0001;
glcolor3f(0,1,1);
glPopMatrix;
Angle := 0.03;
glRotatef (Angle, 0.0, 0.0, 1.0);
glFogCoordfEXT(KFog);
{Sky BOX}
glBindTexture(gl_texture_2d,Textures[texcount+1]);//texcount+1
glEnable (GL_BLEND);
glCallList(Inside);
glDisable (GL_BLEND);
glPushMatrix;
{--- Sky----}
glPopMatrix;
glTranslated(10,10,10);
glRotatef(90,-1,-1,-1);
MyMesh.Draw;
glPushMatrix;
SwapBuffer();
inc( framec);
end;
procedure InicialiseOpenGLProgramm;
var
i,j:integer;
Quadric : GLUquadricObj;
begin
Tss:=10;
F:=true;
tt:=1;
time := GetTickCount;
First:=true;
MyMesh := TGLMultyMesh.Create; Создание модели
MyMesh.LoadFromFile( 'ManRun.gms' );
MyMesh.Extent := true;
if not InitOpenGL( GrWindow ) then exit;
// FONT
wglUseFontBitmaps( GetDC( GrWindow ), 0, 255, GLF_START_LIST );
glListBase( GLF_START_LIST );
//SOME PARAMETRES
glClearColor( 0.0, 0.0, 0.2, 0.0 );
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL );
// VIEWPORT
glViewport( 0, 0, Screen_Width,Screen_Height);
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 65.0, Screen_Width/Screen_Height, 0.5, 500.0 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LESS );
//Loading textures,models and other actions
LoadMap('map.txt');
glEnable(gl_texture_2d);
TargetCamera.Create;
HMAP := TBitmap.Create;
HMAP.LoadFromFile('map.bmp');
W:=HMAP.Width;
H:=HMAP.Height;
SetLength(MapArr,W+2,H+2);
for i := 0 to H-1 do
for j := 0 to W-1 do
begin
MapArr[j,i].X:=j;
MapArr[j,i].Y:=GetBValue(HMAP.Canvas.Pixels[j,i])/10;
MapArr[j,i].Z:=i;
end;
HMAP.free;
{Fog}
glEnable(GL_FOG);
glFogi(GL_FOG_MODE, GL_LINEAR);
glFogfv(GL_FOG_COLOR, @fogColor);
glFogf(GL_FOG_START, 0.0);
glFogf(GL_FOG_END, 1.0);
glHint(GL_FOG_HINT, GL_NICEST);
// 'крепим' туман на координатах вершин
glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT);
Quadric := gluNewQuadric;
gluQuadricTexture (Quadric, TRUE);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glNewList (Inside, GL_COMPILE); Фот и сфера!
glEnable(GL_CULL_FACE);
glCullFace(GL_FRONT);
gluSphere (Quadric, 100.99, 24, 24);
glDisable(GL_CULL_FACE);
glEndList;
gluDeleteQuadric (Quadric);
glEnable(GL_DEPTH_TEST);
{--}
end;
хм (2005-05-10 20:17:00) [7]П7 (10.05.05 16:34) [1]
дык :D
var
Game : TGame;
begin
Game:=TGame.Create;
try
Game.Exec();
finally
Game.Free;
end;
:)
petya-kurochkin (2005-05-10 17:51:00) [8]А может тебе туман обозрение подрывает?
П7 (2005-05-10 16:34:00) [9]Ты что-то неправильно делаешь! (:
Код полный давай, а то я тоже могу спросить:
Почему у меня игра не работает? Вот код:
var
Game : TGame;
begin
Game.Exec();
end;