Forum » Programiranje » 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);
}
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...
//#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.
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,...
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
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C++ programirane v Open GL oz. Direct xOddelek: Programiranje | 2990 (2261) | Vesoljc |
» | OpenGL problemOddelek: Programiranje | 2493 (2059) | Gundolf |
» | Win32 API in C++Oddelek: Programiranje | 1573 (1444) | Monster |
» | Odpiranje dat.exe v VBOddelek: Programiranje | 3004 (2797) | webblod |
» | DirectX, neki ne greOddelek: Programiranje | 1156 (1054) | Senitel |