• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd z inicjacją kodu

Object Storage Arubacloud
0 głosów
397 wizyt
pytanie zadane 8 października 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)
Kiedy mam że jeżeli nie zainicjuje się kod to wypisuje "k", i zwraca 0 to właśnie to się dzieje, i nie wiem czemu, podłączyłem linkera, compilera, linker settings itd.

#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>

using namespace std;

int main()
{
    if(glewInit() != GLEW_OK)
    {
        cout << "k";
        return 0;
    }
    if(!glfwInit())
    {
        cout << "Failed to open window" << endl;
        glfwTerminate();
        return 0;
    }
    GLFWwindow* window = glfwCreateWindow(800, 600, "", NULL, NULL);
    glfwMakeContextCurrent(window);

    while(!glfwWindowShouldClose(window))
    {


        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwTerminate();

    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 8 października 2015 przez Szykem2 Nałogowiec (29,510 p.)
wybrane 9 października 2015 przez Avernis
 
Najlepsza

Mogę się mylić ale chyba najpierw powinieneś stworzyć okno do wyświetlania a dopiero potem inicjalizować biblioteki. W sensie przerzuć liniki 22 i 23 na początek maina.

EDIT: Przerzuć tylko inicjalizację glew za tworzenie okna. To poprzednie co pisałem może wywalić jakiś błąd.


    if(!glfwInit())
    /...
    GLFWwindow* window = glfwCreateWindow(800, 600, "", NULL, NULL);
    glfwMakeContextCurrent(window); 
    if(glewInit() != GLEW_OK)

 

komentarz 9 października 2015 przez Avernis Nałogowiec (27,400 p.)
Ale to nie wywala błędów kompilatora, tylko nie chce sie zainicjalizować biblioteka nie wiem czemu, może coś źle zrobiłem podczas instalacji
komentarz 9 października 2015 przez adrian17 Ekspert (344,860 p.)
edycja 9 października 2015 przez adrian17

Ale może o to właśnie chodzi, że najpierw musisz stworzyć okno z kontekstem OGL. To jest pierwsze zdanie na ich stronie (http://glew.sourceforge.net/basic.html ):

First you need to create a valid OpenGL rendering context

komentarz 9 października 2015 przez Avernis Nałogowiec (27,400 p.)
Ale najprawdopodobmiej coś źle skompilowałem, o są też inne błędy, np #include<GL/glew.h> nie może być pod innymi includani :/
komentarz 9 października 2015 przez Szykem2 Nałogowiec (29,510 p.)
Najpierw musi być stworzone okno i kontekst a dopiero później inicjalizowana bibliotega glew a to o błędzie to chodziło mi o to, że najpier musisz zainicjalizować glfw stworzyć okno i zainicjalizować glew a jakbyć na początku próbował stworzyć okno to by wywaliło błąd, że funkcje nie zostały zainicjalizowane czy coś w ten deseń.

Napiszę jeszcze raz najpierw inicjalizujesz glfw, później tworzysz okno i kontekst a dopiero potem inicjalizujesz glew.
komentarz 9 października 2015 przez Avernis Nałogowiec (27,400 p.)

lol, działa, dzięki, tego sie nie spodziewałem yes

komentarz 9 października 2015 przez adrian17 Ekspert (344,860 p.)

lol, działa, dzięki, tego sie nie spodziewałem

Jak można było się tego nie spodziewać, jeśli to pierwsza rada w pierwszym zdaniu na pierwszej stronie oficjalnego tutoriala ze strony GLEWa -_-

komentarz 9 października 2015 przez Avernis Nałogowiec (27,400 p.)
no, może, ale ja tam niegdy nie umiałem się połapać w tych angielskich tutorialach
0 głosów
odpowiedź 8 października 2015 przez niezalogowany
To sprawdź jaki dokładnie kod zwraca glewInit(), wtedy się dowiesz co jest nie tak.
komentarz 8 października 2015 przez Avernis Nałogowiec (27,400 p.)
A jak to zrobić?
komentarz 8 października 2015 przez niezalogowany

GLEW_OK to najpewniej jakiś enum, więc zrób coś w stylu

auto result = glewInit()

if(result != GLEW_OK)
{
 cout << result << endl;
 ...
}

Następnie sprawdzasz w dokumentacji co oznacza kod, który wypluje ci konsola

komentarz 8 października 2015 przez Avernis Nałogowiec (27,400 p.)
jak robię to co ty to mi wyskakuje: result does not name a type
komentarz 8 października 2015 przez niezalogowany
Bo nie mam pojęcia czym jest GLEW_OK, skorzystaj z glewGetErrorString ( http://www-personal.umich.edu/~bazald/l/api/glew__tail_8h.html ) do wyświetlenia komunikatu błędu
komentarz 8 października 2015 przez adrian17 Ekspert (344,860 p.)

result does not name a type

(pewnie nie włączyłeś C++11)

W każdym razie przykład używania glewGetErrorString masz na samej stronie GLEWa: http://glew.sourceforge.net/basic.html

komentarz 9 października 2015 przez Avernis Nałogowiec (27,400 p.)
a jak włączyć c++ 11?
komentarz 9 października 2015 przez adrian17 Ekspert (344,860 p.)

Podobne pytania

–2 głosów
2 odpowiedzi 723 wizyt
pytanie zadane 10 marca 2017 w C i C++ przez Jakub Chomicz Początkujący (380 p.)
0 głosów
1 odpowiedź 836 wizyt
pytanie zadane 19 lutego 2017 w C i C++ przez Jakub Chomicz Początkujący (380 p.)
0 głosów
1 odpowiedź 268 wizyt
pytanie zadane 26 stycznia 2017 w C i C++ przez Jakub Chomicz Początkujący (380 p.)

92,583 zapytań

141,434 odpowiedzi

319,668 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...