Although it seemedly linked i only got a gray empty form on my screen :rolleyes
which is nice of course v.s a external error , ah any ways i posted the header and the cpp file down here, see if you can find any errors in my lesson6 code.
CPP FILE>>
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#pragma comment(lib, “glaux.lib”)
//Opengl
#include <windows.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
#include <float.h>
#include <fstream.h>
#include “Unit1.h”
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource ".dfm"
TForm1 Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent Owner)
: TForm(Owner)
{
Application->OnIdle = IdleLoop;
_control87(MCW_EM, MCW_EM);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdleLoop(TObject, bool& done)
{
done = false;
wglMakeCurrent(m_hDC, m_hRC);
RenderGLScene();
SwapBuffers(m_hDC);
wglMakeCurrent(m_hDC, NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
SetWindowStats(640, 480, 16);
m_hDC = GetDC(Handle);
SetPixelFormatDescriptor();
m_hRC = wglCreateContext(m_hDC);
wglMakeCurrent(m_hDC, m_hRC);
m_fXRot = 0.0f;
m_fYRot = 0.0f;
m_fZRot = 0.0f;
FormResize(NULL);
InitGL();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
if(BorderStyle == bsNone)
ChangeDisplaySettings(NULL,0);
ReleaseDC(Handle, m_hDC);
wglMakeCurrent(m_hDC, NULL);
wglDeleteContext(m_hRC);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SetPixelFormatDescriptor()
{
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
24,
0,0,0,0,0,0,
0,0,
0,0,0,0,0,
32,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0
};
m_iPixelFormat = ChoosePixelFormat(m_hDC, &pfd);
SetPixelFormat(m_hDC, m_iPixelFormat, &pfd);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
wglMakeCurrent(m_hDC, m_hRC);
glViewport(0, 0, ClientWidth, ClientHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, static_cast<double>(ClientWidth) /
static_cast<double>(ClientHeight),
0.1,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
wglMakeCurrent(m_hDC, NULL);
}
//---------------------------------------------------------------------------
bool fastcall TForm1::SetWindowStats(int iWidth, int iHeight, int iColor_)
{
ClientWidth = iWidth_;
ClientHeight = iHeight_;
if(Application->MessageBox(“Would You Like To Run In Fullscreen Mode?”,
“Start FullScreen?”,
MB_YESNO|MB_ICONQUESTION)==IDYES)
{
DEVMODE dmScreenSettings;
memset(&dmScreenSettings,0,sizeof(dmScreenSettings));
dmScreenSettings.dmPelsWidth = iWidth_;
dmScreenSettings.dmPelsHeight = iHeight_;
dmScreenSettings.dmBitsPerPel = iColor_;
dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
if(ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
{
return false;
}
else
{
BorderStyle = bsNone;
Left = 0;
Top = 0;
}
}
return true;
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::InitGL()
{
wglMakeCurrent(m_hDC, m_hRC);
glShadeModel(GL_SMOOTH);
glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glEnable(GL_TEXTURE_2D);
LoadGLTextures();
wglMakeCurrent(m_hDC, NULL);
return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RenderGLScene()
{
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -5.0f);
glRotatef(m_fXRot, 1.0f, 1.0f, 0.0f);
glRotatef(m_fYRot, 0.0f, 1.0f, 0.0f);
glRotatef(m_fZRot, 0.0f, 0.0f, 1.0f);
glBindTexture(GL_TEXTURE_2D, m_uiTexture[0]);
glBegin(GL_QUADS);
//Front Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
//Back Face
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
//Top Face
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
//Bottom Face
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
//Right Face
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
//Left Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
glEnd();
m_fXRot += 0.3f;
m_fYRot += 0.2f;
m_fZRot += 0.4f;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if(Key == VK_ESCAPE)
Close();
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::LoadGLTextures()
{
bool boStatus = false;
AUX_RGBImageRec *pTexImage = auxDIBImageLoad(“Data/NeHe.bmp”);
if (pTexImage != NULL)
{
boStatus = true;
glGenTextures(1, &m_uiTexture[0]);
glBindTexture(GL_TEXTURE_2D, m_uiTexture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, pTexImage->sizeX, pTexImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexImage->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
if (pTexImage->data)
free (pTexImage->data);
free(pTexImage);
}
return boStatus;
}
//---------------------------------------------------------------------------
HEADER FILE >>
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <GL/glaux.h>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall FormKeyPress(TObject *Sender, char &Key);
private: // User declarations
HDC m_hDC;
HGLRC m_hRC;
int m_iPixelFormat;
// Rotation Variables
float m_fXRot;
float m_fYRot;
float m_fZRot;
// Texture Storage
GLuint m_uiTexture[1];
bool __fastcall InitGL();
bool fastcall SetWindowStats(int iWidth, int iHeight, int iColor);
bool __fastcall LoadGLTextures();
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void __fastcall IdleLoop(TObject *, bool&);
void __fastcall RenderGLScene();
void __fastcall SetPixelFormatDescriptor();
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
remember that this is a BORLAND C++ 5.0 code.
It’s a big mystery why it doesn’t display a spinning cube with bmp in it.