Ir ao conteúdo
  • Cadastre-se

Dhenyson Jhean

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Reputação

0
  1. Não sei se esse é o local certo para duvidas com OpenGL. Mas vamos lá. Comecei estudar OpenGL hoje (há 3 horas pra ser mais exato) e estou com um pequeno problema. Tenho um programa que não faz nada além de criar uma janela no padrão RGB, e eu queria fazer o seguinte, quando eu apertar a letra 'r' a cor da janela ficar vermelha (red) quando apertar 'g' ficar verder e 'b' azul, com direito a misturas, exemplo, se eu apertar 'r' e 'g' a janela ficar amarela (pois vermelho e verde cria o amarelo). O meu programa funciona? SIM! porém ele funciona assim... quando eu aperto "uma cor" sofre a mudança de cor, porém eu não vejo, para eu poder perceber eu tenho que maximizar a janela ou minimizar, exemplo, a janela esta branca eu aperto 'r' e ele continua branca mas quando eu maximizo/minimizo ela fica vermelha (muda de cor). Como eu falei comecei hoje e meu programa é super simples, espero que me ajudem, pois comprei um livro de um amigo meu mas não encontrei esse problema, e minha faculdade está de ferias e não tenho contato com nenhum prof. Meu código (não está comentado, mas quem sabe OpenGL vai entender muito fácil pois isso é o básico do básico básico): ____________________________________ #include <GL/gl.h>#include <GL/glut.h>#include <windows.h>GLfloat red = 0, green = 0, blue = 0;void Desenha(void){ glClearColor(red,green,blue,0.0); glClear(GL_COLOR_BUFFER_BIT); glFlush();}void Inicializacao(void){ glMatrixMode(GL_PROJECTION); glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity();}void Teclado(unsigned char key, int x, int y){ switch(key){ case 114: if(red == 0){ red = 1; } else { red = 0; } break; case 103: if(green == 0){ green = 1; } else { green = 0; } break; case 98: if(blue == 0){ blue = 1; } else { blue = 0; } break; case 27: exit(0); break; }}int main(int argc, char** argv){ glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowPosition(100,100); glutInitWindowSize(400,400); glutCreateWindow("Minha janelinha"); Inicializacao(); glutDisplayFunc(Desenha); glutKeyboardFunc(Teclado); glutMainLoop(); return 0;}
  2. Esse que é o problema, quando eu altero para .h da erro na compilação, talvez o problema deve ser meu compilador. Vou tentar outro compilador. Mas o erro que da é esse: _____________________________ C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o main.cpp:(.text+0x48): undefined reference to `GradeBook::GradeBook(std::string)' C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o main.cpp:(.text+0x94): undefined reference to `GradeBook::GradeBook(std::string)' C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o main.cpp:(.text+0xbb): undefined reference to `GradeBook::getCourseName()' C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o main.cpp:(.text+0xce): undefined reference to `GradeBook::getCourseName()' c:\program files (x86)\dev-cpp\mingw32\mingw32\bin\ld.exe C:\Users\Dhenyson\AppData\Local\Temp\ccV4QCLm.o: bad reloc address 0xf in section `.text$_ZN9GradeBookD1Ev[__ZN9GradeBookD1Ev]' c:\program files (x86)\dev-cpp\mingw32\mingw32\bin\ld.exe final link failed: Invalid operation C:\Users\Dhenyson\SkyDrive\programacao\cpp\OO\02\collect2.exe [Error] ld returned 1 exit status
  3. Estou usando Notepad++ . Eu ja tentei informar o nome de .h mas da erro. Por favor você pode apenas copiar esses arquivos e colar e compilar? Eu já estou na pagina 250 do livro e estou acompanhando sem problema, porém esse detalhe não me deixa em paz e não consigo estudar até resolver isso. No arquivo main deve está incluindo GradeBook.h e não .cpp
  4. Olá, vou direto ao assunto porque vai ser um pouco grande e complicado de explicar. Estou acompanhando um livro (C++ como programa 5º edição, Deitel) da minha faculdade. E fiz um programa que tem 3 arquivos. GradeBook.h --> o cabeçalho do programa, aqui apenas vou DECLARAR as funções GradeBook.cpp --> Aqui eu vou "importar" as funções declaradas em GradeBook.h e vou criar um corpo para elas. main.cpp --> Nesse aqui eu devo "importar" GradeBook.h para acessar suas funções (lembrando que as funções de .h estar em outro arquivo "GradeBook.cpp") Conclusão, o objetivo é criar um cabeçalho que eu possa usar suas funções em outro programa, PORÉM o cabeçalho NÃO pode ter o corpo das funções por questão de segurança de dados, se no meu programa eu incluir "GradeBook.cpp" que é o arquivo onde está o corpo das funções de GradeBook.h, não vai adiantar de nada esse esforço... ________________________________________ //Arquivo --> GradeBook.h = cabeçalho #include <string> using namespace std; class GradeBook { public: GradeBook(string); //Isso é um construtor que server para iniciar courseName void setCourseName(string); string getCourseName(); void displayMessage(); private: string courseName; _________________________________________ //Arquivo --> GradeBook.cpp #include <iostream> #include "GradeBook.h" using namespace std; GradeBook::GradeBook(string name) { setCourseName(name); } void GradeBook::setCourseName(string name) { if (name.length() <= 25) { //se o tamanho da string name for <= 25 courseName = name; } if (name.length() > 25) { //se o tamanho da string name for > 25 courseName = name.substr(0, 25); //courseName recebe apenas os primeiros 25 caracteres, começando do 0 cout<<"Name \""<<name<<"\" exceeds maximum lenght (25).\n" <<"Limiting courseName to first 25 characters.\n"<<endl; } } string GradeBook::getCourseName() { return courseName; } void GradeBook::displayMessage() { cout<<"Welcome to the Grade Book for\n"<<getCourseName()<<"!"<<endl; } ____________________________________________ //arquivo --> main.cpp #include <iostream> //A proxima linha é que esta o erro, não dar erro na verdade, mas era pra está incluindo // o arquivo "GradeBook.h" igual o livro, mas o meu só funciona incluindo "GradeBook.cpp" #include "GradeBook.cpp" using namespace std; int main() { GradeBook gradeBook1("Nome do primeiro curso."); GradeBook gradeBook2("Nome do segundo curso"); cout<<"gradeBook1 created for course: "<<gradeBook1.getCourseName() <<"\ngradeBook2 created for course: "<<gradeBook2.getCourseName() <<endl; return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...