.[ ČeskéHry.cz ].
OpenGL - windows 7 - ifdef GL_VERSION_1_4 problem

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Karl-von-bahnhof



Založen: 24. 01. 2010
Příspěvky: 5

PříspěvekZaslal: 24. leden 2010, 21:22:15    Předmět: OpenGL - windows 7 - ifdef GL_VERSION_1_4 problem Odpovědět s citátem

Dobrý den, jen podotýkám, že už nějakou dobu pročítám různé stránky, ale výsledek je, že v tom mám trochu binec Mad

Čtu knihu OpenGL průvodce programátora a příklady, kde je konstrukce:
kód:
ifdef GL_VERSION_1_4
tam se kód neprovede.

Verzi OpenGL v openGL extenssion viewer mi ukazuje 1.4 podpora 100% a verze je 3.0.

I když dodám:
kód:
#include <GL/glext.h>
#define GL_VERSION_1_4
tak mi to vypisuje chyby jako treba:
kód:

1>d:\dokumenty\c++\opengl\test\test\main.cpp(104) : error C3861: 'glPointParameterfvEXT': identifier not found
1>d:\dokumenty\c++\opengl\test\test\main.cpp(95) : error C3861: 'glFogCoordfEXT': identifier not found
Tedy hlavně EXT funkce.

Netušíte někdo co doinstalovat, co kam dokopírovat atd.... ?

Mockrát děkuji
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1050

PříspěvekZaslal: 24. leden 2010, 21:50:01    Předmět: Odpovědět s citátem

skusit definovat GL_GLEXT_PROTOTYPES v nastaveniach projektu.
alebo pouzit GLEW
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Karl-von-bahnhof



Založen: 24. 01. 2010
Příspěvky: 5

PříspěvekZaslal: 24. leden 2010, 22:12:45    Předmět: Odpovědět s citátem

Vypadá to, že glew něco vyřešil. Přestalo to házet něco jako:
kód:
1>d:\dokumenty\c++\opengl\test\test\main.cpp(101) : error C2065: 'GL_POINT_SIZE_MAX_EXT' : undeclared identifier
1>d:\dokumenty\c++\opengl\test\test\main.cpp(103) : error C2065: 'GL_DISTANCE_ATTENUATION_EXT' : undeclared identifier
1>d:\dokumenty\c++\opengl\test\test\main.cpp(103) : error C3861: 'glPointParameterfvEXT': identifier not found

Ale teď to zase píše při linkování:
kód:
1>main.obj : error LNK2001: unresolved external symbol __imp____glewPointParameterfEXT
1>main.obj : error LNK2001: unresolved external symbol __imp____glewPointParameterfvEXT

že by špatně nakopírovaná dll knihovna?

EDIT: ještě bez toho GLEW mě to pustí jen přes:
kód:
ifdef GL_VERSION_1_1
takže ve windows je jen 1.1? Po přidání GLEW už mě to pustí i přes 1.4
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
(CZ)genius



Založen: 28. 07. 2007
Příspěvky: 85
Bydliště: Neratovice

PříspěvekZaslal: 24. leden 2010, 23:20:24    Předmět: Odpovědět s citátem

Mozna blba poznamka, ale mas "dostatecne novou" verzi glext.h? Nejnovejsi kdyztak sezenes na http://www.opengl.org/registry/api/glext.h
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 25. leden 2010, 00:37:51    Předmět: Odpovědět s citátem

Na Windows pro OpenGL novější než 1.1 se nejčastěji používá buď GLEW nebo GLEE. Verze 1.1 je jen minimální konfigurace, jakou je Windows ochotno podporovat, cokoliv novějšího se získává přes wglGetProcAddress, což používají obě zmíněné knihovny.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
michalferko



Založen: 29. 09. 2008
Příspěvky: 83

PříspěvekZaslal: 25. leden 2010, 08:53:03    Předmět: Odpovědět s citátem

To ze to pise pise pri linkovani znamena najskor, ze si neprilinkoval glew32.lib
_________________
Moje minihry a ine projekty
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Karl-von-bahnhof



Založen: 24. 01. 2010
Příspěvky: 5

PříspěvekZaslal: 25. leden 2010, 13:06:22    Předmět: Odpovědět s citátem

Tak abych to shrnul: někoho to třeba bude taky zajímat a hlavně se ujistim že to chápu dobře.

    Podpora ve windows je jen pro verzi 1.1, jinak se musí použít GLEW nebo GLEE.
    Stáhnul jsem si GLEW což dodalo podporu pro verzi 1.4.
    Mezi soubory GLEW knihovny je i soubor kam co nakopírovat.
    Vložil jsem hlavičkový soubor (musí být před glut.h)
    Přilinkoval knihovnu (aditional dependecies v nastavení linkeru v VS2008)


Ale stejně příklady v knize "OpenGL - průvodce programátora" je asi nekompatibilní, protože u některých příkladů se musí přetypovat na const ukazatele (což bude asi kvůli c++ překladači), ale někde to vyhazuje runtime exception. Třeba:
kód:
void display(void)
{
   static GLubyte oneIndices[] = {0, 1, 2, 3, 4, 5, 6};
   static  GLubyte twoIndices[] = {1, 7, 8, 9, 10, 11};
   static GLsizei count[] = {7, 6};
   static const GLvoid * indices[2] = {oneIndices, twoIndices};
   
   glClear (GL_COLOR_BUFFER_BIT);
   glColor3f (1.0, 1.0, 1.0);
   glMultiDrawElementsEXT (GL_LINE_STRIP,(GLsizei *) count, GL_UNSIGNED_BYTE,
                           indices, 2);
   glFlush ();
}

řádek 11: Unhandled exception at 0x00000000 in test.exe: 0xC0000005: Access violation

Navíc mi píše, že count je int místo GLsizei - což taky moc nechápu.[/b]

S tím wglGetProcAddress mě prosím ještě maličko kopni, nějak nechápu co to je.

Jinak používám taky Kubuntu, takže jestli je programování OpenGL jednodušší v Linuxu, tak já nebudu spouštět sedmičky Smile co myslíte.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1050

PříspěvekZaslal: 25. leden 2010, 13:59:41    Předmět: Odpovědět s citátem

no v linuxe som len definoval GL_GLEXT_PROTOTYPES a mam dostupne vsetko co podporuje MESA co znamena prakticky OGL 2.1 bez GLEW alebo GLEE.

pouzitie wglGetProcAddress je nasledovne. ale lepsie je pouzivat to GLEW.
kód:
glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)wglGetProcAddress("glMultiTexCoord1fARB");

glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)wglGetProcAddress("glMultiTexCoord2fARB");

glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)wglGetProcAddress("glMultiTexCoord3fARB");

glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)wglGetProcAddress("glMultiTexCoord4fARB");


inak by si si mal stiahnut najnovsiu verziu glext.h http://www.opengl.org/registry/api/glext.h a dat do include/GL adresara tvojho prekladaca. myslim ze mas staru verziu ktora je len do 1.4
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Karl-von-bahnhof



Založen: 24. 01. 2010
Příspěvky: 5

PříspěvekZaslal: 25. leden 2010, 15:22:18    Předmět: Odpovědět s citátem

Následující funkce mi vyhazují neoprávněný zápis do paměti - použití NULL
kód:
glBlendEquation(GL_FUNC_ADD);
glFogCoordfEXT (f1);
glMultiDrawElementsEXT (GL_LINE_STRIP,(GLsizei *) count, GL_UNSIGNED_BYTE, indices, 2);

//vsechny vraci:
Unhandled exception at 0x00000000 in test.exe: 0xC0000005: Access violation

Mohlo by být tím, že sem si přepsal knihovnu openGL32 (což sem ale myslím nedělal)? Nebo nějaký jiný problém? Prostě mi příde, že ty pokročilejší funkce nejsou někde inicializovaný.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 25. leden 2010, 16:24:30    Předmět: Odpovědět s citátem

Nejspíš ten glew inicializuješ ve špatný čas, jsi si jist, že
1) vytvoříš kontext
2) zavoláš wglMakeCurrent (a ten vrátí TRUE)
3) a teprve potom zavoláš glewInit()

?
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
johnnash



Založen: 30. 07. 2007
Příspěvky: 80

PříspěvekZaslal: 25. leden 2010, 16:26:14    Předmět: Odpovědět s citátem

Pokud pouzivas glew volas pri inicializaci glewInit()?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Karl-von-bahnhof



Založen: 24. 01. 2010
Příspěvky: 5

PříspěvekZaslal: 25. leden 2010, 19:43:10    Předmět: Odpovědět s citátem

No jasně že nevolám. Embarassed to sou ty manuály.

Pro zájemce o čem je řeč: http://glew.sourceforge.net/basic.html

Díky moc vám všem. Byla radost s Vámi spolupracovat (i když na mý straně to bylo asi horší)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna