» »

OpenGL orr v ansi c

OpenGL orr v ansi c

Monster ::

ma mam en problem is sicer mi izpise external link error al nieki tazga

mam vse libe od opengl vkljucene v šprojekt se pravi tako opengl32.lib, glu32.leib in glaux.lib


nevem no... evo vam kode

*****************************************************************************************
/*Aplikacija 1....*/
/*glavne lastnosti: */
/*Pisana V ANSI C */
/*prikazuje */
/*Win32 aplikacijo z opengl intializacijo*/

/*By Tilen turnsek*/


///////////////////////////////////////////////////////////////////////
/*Lib datoteke*/
//#pragma comment(lib,"opengl32.lib")
//#pragma comment(lib,"glaux.lib")
//#pragma comment(lib,"glu32.lib")

/*Includi*/
#include "windows.h"

#include "gl\gl.h"
#include "gl\glu.h"
#include "gl\glaux.h"


/*Navadni prototipi*/
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

/*OpenGl prototipi*/
GLvoid NastaviGlSceno(GLsizei w, GLsizei h); /*h=visina, W=sirina*/
int InicGL(GLvoid); /*Nastavimo vse za opengl*/
int NarisiOpenGlSceno(GLvoid); /*Risanje scene*/
int NarisiGlOkno(char *naslov, int x, int y, int b_globina); /*OpenGL podporo*/

/*Spremenljivke(globalne)*/
HGLRC hRc=NULL;
HDC hDc=NULL;
HWND hWnd=NULL;
HINSTANCE hInstance=NULL;


/////////////////////////////////////////////////////
static PIXELFORMATDESCRIPTOR pdf= // pfd Tells Windows How We Want Things To Be
{
sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor
1, // Version Number
PFD_DRAW_TO_WINDOW | // Format Must Support Window
PFD_SUPPORT_OPENGL | // Format Must Support OpenGL
PFD_DOUBLEBUFFER, // Must Support Double Buffering
PFD_TYPE_RGBA, // Request An RGBA Format
32, // Select Our Color Depth
0, 0, 0, 0, 0, 0, // Color Bits Ignored
0, // No Alpha Buffer
0, // Shift Bit Ignored
0, // No Accumulation Buffer
0, 0, 0, 0, // Accumulation Bits Ignored
16, // 16Bit Z-Buffer (Depth Buffer)
0, // No Stencil Buffer
0, // No Auxiliary Buffer
PFD_MAIN_PLANE, // Main Drawing Layer
0, // Reserved
0, 0, 0 // Layer Masks Ignored
};

//////////////////////////////////////////////////////


/*Glavna funkcija*/
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
int dela=0;

NarisiGlOkno("test", 800, 600, 32);

while(!dela)
{
TranslateMessage(&msg);
DispatchMessage(&msg);

NarisiOpenGlSceno();
SwapBuffers(hDc);

}

return 0;
}

/*OpenGl funkcije*/
GLvoid NastaviGlSceno(GLsizei w, GLsizei h)
{
/*Nastavimo vieport in nasplosno sceno*/

/*Resetiramo trenutni ViewPort*/
glViewport(0, 0, w, h);

/*Nastavimo tip scene*/
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

/*Nastavimo ASPET ratio... nastavimo pogled v sceni*/
gluPerspective(45.0f,(GLfloat)w/(GLfloat)h,0.1f,100.0f);

/*Spet nastavimo tip scene*/
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

int InicGL(GLvoid)
{
/*Sencenje*/
glShadeModel(GL_SMOOTH);

/*Barva ozadja in sicer crna*/
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

glClearDepth(1.0f); /*Nastavivte back buferja*/
glEnable(GL_DEPTH_TEST); /*Testiramo back buffer*/
glDepthFunc(GL_LEQUAL); /*Tip testa*/

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); /*Narocimo opengl da naredi najlepsi izracun scene */

return 1;
}

int NarisiOpenGlSceno(GLvoid)
{
/*Spucamo ekranski in depth buffer*/
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity(); /*resetiramo trenutni modelview*/

return 1;
}

int NarisiGlOkno(char *naslov, int w, int h, int b_globina)
{
GLuint PixelFormat;

WNDCLASS wc;

DWORD dwExStyle; // Window Extended Style
DWORD dwStyle; // Window Style

/*Nastavimo lastnotsti okna*/
RECT WinRec;

WinRec.left = (long)0;
WinRec.top = (long)0;
WinRec.right = (long)w;
WinRec.bottom = (long)h;

/*Narihtamo nas wnd class*/
hInstance = GetModuleHandle(NULL);
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wc.lpfnWndProc = (WNDPROC) WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra= 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = "naslov";

/*registracija razreda*/
if(!RegisterClass(&wc))
{
MessageBox(NULL, "Napak pri registraciji razreda!", "Napaka..,", MB_OK | MB_ICONEXCLAMATION);
return 0;
}

/*Krecija okna*/
hWnd=CreateWindowEx(dwExStyle, // Extended Style For The Window
"naslov", // Class Name
naslov, // Window Title
WS_CLIPSIBLINGS | // Required Window Style
WS_CLIPCHILDREN | // Required Window Style
dwStyle, // Selected Window Style
0, 0, // Window Position
WinRec.right-WinRec.left, // Calculate Adjusted Window Width
WinRec.bottom-WinRec.top, // Calculate Adjusted Window Height
NULL, // No Parent Window
NULL, // No Menu
hInstance, // Instance
NULL); // Don't Pass Anything To WM_CREATE

/*Nastavitev PixelFormata(zelo vazno)*/




/*Gemo dalej dobimo HDC*/
hDc = GetDC(hWnd);
/*Nastavimo pixel format*/
PixelFormat=ChoosePixelFormat(hDc,&pdf);
/*Setiramo pixelformat*/
SetPixelFormat(hDc,PixelFormat,&pdf);
/*damo rc*/
hRc=wglCreateContext(hDc);
/*Aktiviramo renderja*/
wglMakeCurrent(hDc,hRc);

/*Prikaz okna*/
ShowWindow(hWnd, SW_SHOW);
SetForegroundWindow(hWnd);
SetFocus(hWnd);
NastaviGlSceno(w, h);

/*Poklicemo nastaviGL*/
InicGL();

return 1;
}

/*Navadne Win32 funkcije*/
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
PostQuitMessage(0);
return 1;
}


return DefWindowProc(hWnd, msg, wParam, lParam);
}
Ka zaboga...

Senitel ::

Arm tole:
//#pragma comment(lib,"opengl32.lib")
//#pragma comment(lib,"glaux.lib")
//#pragma comment(lib,"glu32.lib")
Ni glih pameten, da je zakomentiran...

Zgodovina sprememb…

  • spremenil: Senitel ()

GaPe ::

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
PostQuitMessage(0);
return 1; // tuki je dobr če je return 0;
}


Don't steal! The government hates competition.

Monster ::

ja se tist ni kometiran sm ko sem teste delu....

dejte mi se kej :((
Ka zaboga...

Senitel ::

Za kere funkcije ti vrne "unresolved external"?

Monster ::

ma nc ne selekta kr napise pa konc... :(
Ka zaboga...

Senitel ::

Čak a to je čist ANSI C compiler (ne C++)??

Monster ::

to ti je Visula C++ 6.0 SP3 iz MS VS 6
Ka zaboga...

Senitel ::

O pismo ej kej tazga pa še ne 8-O... Ej če ti povem kje je bug se boš še en mesec režal al pa z glavo v zid tolku :D...
V prvi vrstici daj na začetek vsaj en /...
LOL >:D...
He, he, he, he,...

Monster ::

eeeeee titste zvezdice ne niso drgač v kod sm ločijo tule.. tk da to ni verjetno error
Ka zaboga...

Senitel ::

Ja jest sem copy pastov tole v VC++ 6.0 (skupaj z zvezdicami) in sem dobil ene erorje zarad enih externov... Pol sem zakomentiral une zvezdice, popravil še uno z parametri pri kreiranju okna in zadeva se je skompileala in pognala...

Monster ::

bemu mater, da je to men že dellao nekoč zdele pa naekrat noče več :(... se bo i hope
Ka zaboga...

igor12 ::

Za MS Visual C++ 6.0 maš primer tukaj:
http://graph-srv.uni-mb.si/Ares/primer....

Ta bo špilal...Potem pa samo v metodi DrawObject skomponiraj svoje objekte. :)

Če pa bi rad dobil v roke primer, ko so objekti narisani, pa se sukajo okrog neke osi (ali več osi), pa me nekak najdi...

MM


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C++ programirane v Open GL oz. Direct x

Oddelek: Programiranje
242734 (2005) Vesoljc
»

OpenGL problem

Oddelek: Programiranje
212119 (1685) Gundolf
»

Win32 API in C++

Oddelek: Programiranje
131369 (1240) Monster
»

Odpiranje dat.exe v VB

Oddelek: Programiranje
122506 (2299) webblod
»

DirectX, neki ne gre

Oddelek: Programiranje
6961 (859) Senitel

Več podobnih tem