Gå til innhold

Trenger hjelp med opengl.


Anbefalte innlegg

Hmm, alle setningane slutta jo med ;

Hehe vel jeg tenkte på setninger som ikke er i kode :) ;

 

 

Men nå er alle de errorane fixa, men nå får jeg glaux.lib error feil igjen :S
1>LINK : fatal error LNK1104: cannot open file 'glaux.lib'

Noen som har kjennskap til det problemet?

 

Vel problemet kommer av at ms ikke lengere har glaux med i sin pakke, men hva bruker du glaux til?

Lenke til kommentar
Videoannonse
Annonse

Ja, men hvorfor for jeg error der da?

#define WIN32_LEAN_AND_MEAN

#include <windows.h>

#include <GL\GL.H>

// This is a foreward declaration of the function that creates the OpenGL window
HWND ThisCreateWindow(ATOM window_class);
// This is a foreward declaration of the function that registers the OpenGL windows class
ATOM ThisRegisterClass();
// This is a foreward declaration of the function that initializes OpenGL on the specified window
HGLRC ThisInitOpenGL(HDC dc, HWND wnd);

// Variable containing window handle
HWND m_hwnd;
// Variable containing window device rendering context
HDC m_hdc;
// Variable containing OpenGL instance handle
HGLRC m_gl;

// Variable containing window class
ATOM wnd_class;

// Application state variable
int app_running = FALSE;

int CleanUp();
int ErrorCleanUp();

// Main OpenGL render function
void Render();

// Program entry point
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

// Register our window class
wnd_class = ThisRegisterClass();
MSG msg;

// Create a new instance of our window class
m_hwnd = ThisCreateWindow(wnd_class);

// Create a window device rendering context
m_hdc = GetDC(m_hwnd);

// Initialize OpenGL
if(!(m_gl = ThisInitOpenGL(m_hdc, m_hwnd)))
	return ErrorCleanUp(); // Failed initializing OpenGL


// Update and show window
UpdateWindow(m_hwnd);
ShowWindow(m_hwnd, SW_SHOW);

app_running = TRUE;

// Main application loop
while(app_running)
{
	if(GetAsyncKeyState(VK_ESCAPE) & 0x0001)
		app_running = FALSE;

	Render();
	if(PeekMessage(&msg, m_hwnd, 0, 0, PM_REMOVE))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
}

return CleanUp();
}


// OpenGL render function
void Render()
{



glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2, 2, -2, 2, -2, 2);
glMatrixMode(GL_MODELVIEW);


// Place all OpenGL render functions here

glRotatef(1, 0, 0, 1);
glBegin(GL_QUADS);
{
	glColor3f(1, 0, 0);
	glVertex2f(-1, -1);

	glColor3f(0, 1, 0);
	glVertex2f( 1, -1);

	glColor3f(0, 0, 1);
	glVertex2f( 1,  1);

	glColor3f(1, 1, 1);
	glVertex2f(-1,  1);
}
glEnd();

glFlush();
SwapBuffers(m_hdc);


}

int ErrorCleanUp()
{
CleanUp();
// Return error code
return 1;
}

int CleanUp()
{
// Clean up resources
wglMakeCurrent(NULL, NULL);
wglDeleteContext(m_gl);
ReleaseDC(m_hwnd, m_hdc);
DestroyWindow(m_hwnd);
UnregisterClass((LPCTSTR)wnd_class, NULL);
return 0;
}

HGLRC ThisInitOpenGL(HDC dc, HWND wnd)
{
PIXELFORMATDESCRIPTOR pfd;
int pixel_format;
HGLRC gl;

// Fill memory with zero
ZeroMemory(&pfd, sizeof(pfd));

pfd.cColorBits = 32;	// 32-bit color buffer
pfd.cDepthBits = 32;	// 32-bit z-buffer
pfd.dwFlags = PFD_DOUBLEBUFFER | PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
pfd.nSize = sizeof(pfd);
pfd.nVersion = 1; //Must be 1
pfd.iLayerType = PFD_MAIN_PLANE; // Render to main plane
pfd.iPixelType = PFD_TYPE_RGBA; // Full color, not color indices

// Select closest matching pixel format
pixel_format = ChoosePixelFormat(dc, &pfd);
// Assign pixel format
SetPixelFormat(dc, pixel_format, &pfd);

// Try creating OpenGL device context
if(gl = wglCreateContext(dc))
	wglMakeCurrent(dc, gl); // OpenGL initialized successfully
else
	MessageBox(wnd, "Error initializing OpenGL", "Error", MB_OK | MB_ICONERROR);

// Return OpenGL device context handle
return gl;
}

ATOM ThisRegisterClass()
{
WNDCLASS the_class;

ZeroMemory(&the_class, sizeof(the_class));

// Create a basic window class
the_class.lpszClassName = "OpenGLLesson1Class";
the_class.style = CS_HREDRAW | CS_VREDRAW;
the_class.lpfnWndProc = DefWindowProc;

return RegisterClass(&the_class);
}

HWND ThisCreateWindow(ATOM window_class)
{

HWND wnd = CreateWindow(
	(LPCTSTR)window_class, // Window class is the atom passed. We don't use the class name here, but we could have.
	"OpenGL lesson 1 - Press escape to quit demo", // Window title, doesn't matter.
	WS_OVERLAPPED, // Window style
	CW_USEDEFAULT, // X poistion, use default
	CW_USEDEFAULT, // Y position, use default
	CW_USEDEFAULT, // Width, use default
	CW_USEDEFAULT, // Height, use default
	NULL,			// Parent window: no parent
	NULL,			// Menu, we don't use a menu
	NULL,			// Instance, we don't care
	NULL			// lParam, we don't use additional parameters
	);

return wnd;

}

Lenke til kommentar
Hva er best av directx og opengl?

 

Vil du ha krig på forumet eller?

 

For det første så kan du ikke sammenligne directx med OpenGL siden directX inneholder så utrolig mye mer enn OpenGL. Du må sammenligne med Direct Graphic (tidligere direct 3D).

 

Du har sikkert hørt at DX10 er vista only, men med OpenGL så har du tilgang til så å si alt DG Dx10 kan gi deg og det fra WinXP og *Nix systemer.

Lenke til kommentar

Oja...

Jeg visste egentlig ikke noe særlig om directx, så måtte bare spørre :p

 

Men nå fikk jeg et nytt problem, jeg trenger glaux for å importere texturer, men siden ikke glaux støttes av opengl lengre, hva gjør jeg da?

Endret av kake_fisk
Lenke til kommentar

BMP filer er ganske enkle å lese, så du kan jo begynne med det.

 

BITMAPFILEHEADER file_header;
BITMAPINFOHEADER info_header;

fread(bmp_file, &file_header, sizeof(file_header), 1);
fread(bmp_file, &info_header, sizeof(info_header), 1);

 

og da henter en bitmap data ved å lese fra file_header.bfOffBits.

 

edit: merk at BMP starter fra nederst i venstre opp til øverst i høyere, og at den bruker BGR og ikke RGB rekkefølge.

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...