### Bookstore

 Computer Math and Games in Pascal (preview) Lazarus Handbook

### Author Topic: Help (OpenGL-FPC) with the graphic of the view of two polygons in 3D  (Read 10557 times)

#### carlejt

• New Member
• Posts: 39
##### Help (OpenGL-FPC) with the graphic of the view of two polygons in 3D
« on: June 23, 2011, 06:56:34 am »
Hello

My problem is to represent the view of two polygons in 3D, using Free Pascal and OpenGL at fullscreen mode 640x480;

Note: In each polygon draw the image of a bitmap.

1) Position of eye: (20, 20, 20)
2) Point of observation: (0, 0, 0)
3) Vector Up the camera: (-1, -1, 1)
4) Visual Angle: 45
5) Distance Far: 50
6) Near Distance: 0.1

7) The vertices of the polygon 1 are: (0, 0, 0), (1, 1, 0), (2, 0, 0) with a bitmap 1 of 640x480. (occupying the area of ​​the polygon)

8> The vertices of the polygon 2 are: (0, 0, 5), (1, 1, 5), (2, 0, 5) with a bitmap 2 of 320x200. (occupying the area of ​​the polygon)

Any suggestions would help.

Thanks.

#### mrBrown

• New Member
• Posts: 15
##### Re: Help (OpenGL-FPC) with the graphic of the view of two polygons in 3D
« Reply #1 on: June 23, 2011, 11:01:11 am »
Have you tried GLScene?

#### carlejt

• New Member
• Posts: 39
##### Re: Help (OpenGL-FPC) with the graphic of the view of two polygons in 3D
« Reply #2 on: June 23, 2011, 07:38:48 pm »
Hello

Thanks for responding. I've tried but I failed to install. I followed the instructions in http://wiki.lazarus.freepascal.org/GLScene.

Actually I want to know what would be the code of the program the problem I raised. It would be helpful.

#### mrBrown

• New Member
• Posts: 15
##### Re: Help (OpenGL-FPC) with the graphic of the view of two polygons in 3D
« Reply #3 on: June 24, 2011, 01:13:53 pm »
I think those instructions are a bit outdated.

I downloaded the Snapshot for SVN revision 5593 last week and it installed fine in lazarus 0.9.30.

From lazarus do Package -> open package file
and then select glscene_runtime.lpk in the /Lazarus directory of GLScene (or the other one, don't remember). Lazarus will add the other required packages automatically.

#### Leledumbo

• Hero Member
• Posts: 8499
• Programming + Glam Metal + Tae Kwon Do = Me
##### Re: Help (OpenGL-FPC) with the graphic of the view of two polygons in 3D
« Reply #4 on: June 24, 2011, 07:17:43 pm »
Try the OpenGL example, then try solving the problem yourself. When stuck, post your code so far and explain what you have done and what's missing.

#### carlejt

• New Member
• Posts: 39
##### Re: Help (OpenGL-FPC) with the graphic of the view of two polygons in 3D
« Reply #5 on: June 24, 2011, 11:23:42 pm »
I have followed the example TEXTURES Tutorial OpenGL but I can not compile it. I have the library glut32.dll.

This is the example TEXTURES del tutorial OpenGL:

Code: [Select]
`program textures;{\$mode objfpc}{\$H+}uses  gl, glu, glut, ImagingOpenGL;const  AppWidth = 640;  AppHeight = 480;  LIST_OBJECT = 1;  var  Tex1, Tex2: GLuint;  procedure InitializeGL;begin  glClearColor(0, 0, 0, 0);  Tex1 := LoadGLTextureFromFile('ashwood.bmp');  Tex2 := LoadGLTextureFromFile('Flare.bmp');  glEnable(GL_TEXTURE_2D);end;procedure CreateList;begin  glNewList(LIST_OBJECT, GL_COMPILE);    glBegin(GL_QUADS);      glTexCoord2f(1, 0);      glVertex3f( 2, 2, 0);      glTexCoord2f(0, 0);      glVertex3f(-2, 2, 0);      glTexCoord2f(0, 1);      glVertex3f(-2,-2, 0);      glTexCoord2f(1, 1);      glVertex3f( 2,-2, 0);    glEnd;  glEndList;end;procedure DrawGLScene; cdecl;begin  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);  glLoadIdentity;  glTranslatef(-5, 0, -15);  glBindTexture(GL_TEXTURE_2D, Tex1);  glCallList(LIST_OBJECT);  glLoadIdentity;  glTranslatef(0, 0, -15);  glBindTexture(GL_TEXTURE_2D, Tex2);  glCallList(LIST_OBJECT);  glLoadIdentity;  glTranslatef(5, 0, -15);  glBindTexture(GL_TEXTURE_2D, Tex1);  glCallList(LIST_OBJECT);  glEnable(GL_BLEND);  glBlendFunc(GL_ZERO, GL_SRC_COLOR);  glLoadIdentity;  glTranslatef(5, 0, -15);  glBindTexture(GL_TEXTURE_2D, Tex2);  glCallList(LIST_OBJECT);  glDisable(GL_BLEND);  glutSwapBuffers;end;procedure ReSizeGLScene(Width, Height: Integer); cdecl;begin  if Height = 0 then    Height := 1;  glViewport(0, 0, Width, Height);  glMatrixMode(GL_PROJECTION);  glLoadIdentity;  gluPerspective(45, Width / Height, 0.1, 1000);  glMatrixMode(GL_MODELVIEW);  glLoadIdentity;end;procedure GLKeyboard(Key: Byte; X, Y: Longint); cdecl;begin  if Key = 27 then  begin    glDeleteLists(LIST_OBJECT, 1);    Halt(0);  end;end;procedure glutInitPascal(ParseCmdLine: Boolean);var  Cmd: array of PChar;  CmdCount, I: Integer;begin  if ParseCmdLine then    CmdCount := ParamCount + 1  else    CmdCount := 1;  SetLength(Cmd, CmdCount);  for I := 0 to CmdCount - 1 do    Cmd[I] := PChar(ParamStr(I));  glutInit(@CmdCount, @Cmd);end;var  ScreenWidth, ScreenHeight: Integer;begin  glutInitPascal(True);  glutInitDisplayMode(GLUT_DOUBLE or GLUT_RGB or GLUT_DEPTH);  glutInitWindowSize(AppWidth, AppHeight);  ScreenWidth := glutGet(GLUT_SCREEN_WIDTH);  ScreenHeight := glutGet(GLUT_SCREEN_HEIGHT);  glutInitWindowPosition((ScreenWidth - AppWidth) div 2, (ScreenHeight - AppHeight) div 2);  glutCreateWindow('OpenGL Tutorial :: Textures');  InitializeGL;  CreateList;  glutDisplayFunc(@DrawGLScene);  glutReshapeFunc(@ReSizeGLScene);  glutKeyboardFunc(@GLKeyboard);  glutMainLoop;end.`

Anyone know where to find these examples with the Vampyre Imaging Library units for Free Pascal.

On page

http://imaginglib.sourceforge.net/index.php?page=down

Not only is the unit ImagingOpenGL.

#### Carver413

• Full Member
• Posts: 119
##### Re: Help (OpenGL-FPC) with the graphic of the view of two polygons in 3D
« Reply #6 on: June 25, 2011, 07:24:34 am »
I'm assuming that this is some sort of school project and that learning modern opengl is not really on the agenda. so here is a site that should help you learn the older more user friendly opengl that most of us grew to love.
http://www.freepascal-meets-sdl.net/
also you should check out this site as many people there use sdl and opengl
http://www.pascalgamedevelopment.com/
« Last Edit: June 25, 2011, 07:30:57 am by Carver413 »