Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

c++ OpenGL metoda zachowuje się jak opętana


Rekomendowane odpowiedzi

Opublikowano

Siema, tworze sobie klase do gierki jej kod wygląda następująco :

#include "Loader_OBJ.h"


void OBJ::Mesh_Load()
{

}

void OBJ::Mesh_Draw()
{
glm::vec3 vertex;
vertex.x = 0.0f;
vertex.y = 1.0f;
vertex.z = 0.0f;
OBJ::objVertexs.push_back( vertex );

vertex.x = -1.0f;
vertex.y = -1.0f;
vertex.z = 0.0f;
OBJ::objVertexs.push_back( vertex );

vertex.x = 1.0f;
vertex.y = -1.0f;
vertex.z = 0.0f;
OBJ::objVertexs.push_back( vertex );


    glBegin(GL_TRIANGLES);
         glColor3ub(98,44,55);
         glVertex3f( 0.0f, 1.0f, 0.0f);
         glVertex3f(-1.0f,-1.0f, 0.0f);
         glVertex3f( 1.0f,-1.0f, 0.0f);
    glEnd();

}


w takiej postaci wszystko pięknie działa, program uruchamia się bez problemów, lecz kiedy część kodu przeniosę do funkcji wyżej, wyglada to następująco :

#include "Loader_OBJ.h"


void OBJ::Mesh_Load()
{
glm::vec3 vertex;
vertex.x = 0.0f;
vertex.y = 1.0f;
vertex.z = 0.0f;
OBJ::objVertexs.push_back( vertex );

vertex.x = -1.0f;
vertex.y = -1.0f;
vertex.z = 0.0f;
OBJ::objVertexs.push_back( vertex );

vertex.x = 1.0f;
vertex.y = -1.0f;
vertex.z = 0.0f;
OBJ::objVertexs.push_back( vertex );
}

void OBJ::Mesh_Draw()
{
    glBegin(GL_TRIANGLES);
         glColor3ub(98,44,55);
         glVertex3f( 0.0f, 1.0f, 0.0f);
         glVertex3f(-1.0f,-1.0f, 0.0f);
         glVertex3f( 1.0f,-1.0f, 0.0f);
    glEnd();

}


Program crashuje się podczas uruchamiania, jeśli usunę tę część kodu znajdującą się w metodzie Mesh_Load(która narazie i tak nie robi absolutnie nic!!) program takżę się crashuje o0

 

tak wygląda plik nagłowkowy

#include <GL/glm.hpp>
#include <GL/gtc/matrix_transform.hpp>
#include <GL/glut.h>
#include <vector>


    class OBJ
        {
        public:

            std::vector < glm::vec3 > objVertexs;
            std::vector < glm::vec2 > objUvs;
            std::vector < glm::vec3 > objNormals;

            void Mesh_Load();
            void Mesh_Draw();
        };

Dodam, że w programie wywołuję tylko i wyłącznie funkcję Mesh_Draw. a pozostała zawartość nie robi niczego.

jednak po usunięciu "zbędnego" kodu program sie crasuje, chyba, że usune z funkcji Mesh_Draw kod do rysowania Vertexow...

 

o co tutaj chodzi??

Opublikowano

Nie zgłębiam się w kod, ale na logikę patrząc na nazwy metod to najpierw musisz załadować coś, aby potem móc rysować. W pierwszym kodzie ładujesz i wszystko ok, w drugim zaś nie ładujesz i próbujesz rysować i error. Tylko tak myślę. 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...