Jump to content

Search the Community

Showing results for tags 'opengl'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Comunidade
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Apresentação de Projectos de Programação
    • Downloads
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Pascal
    • Python
    • Bases de Dados
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica e Automação Industrial
    • Matemática
    • Software de Contabilidade, Finanças e Admin. Pública
    • Dúvidas e Discussão de Programação
    • Tutoriais
    • Snippets / Armazém de Código
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website


GitHub


LinkedIn


Twitter


Facebook

  1. Estou a desenvolver uma aplicação em QT c++ em que consiste em dar load a um ficheiro 3d (.obj), e apresentá-lo numa QOpenGLWidget. Já tenho isso tudo feito, só que neste momento quero desenhar um "reference point", e tenho tido muitos problemas como a distancia do ponto relativamente ao objeto, ou seja, o z que obtenho não é o z da superfície do objeto, se fizer alguma rotação o x,y já dão errados. Estou a fazer esse reference point recorrendo ao mousePressEvent. Gostaria de saber como posso desenvolver isto, que bibliotecas preciso, porque já não sei o que fazer mais. Depois do "reference point" vou precisar de desenhar linhas sobre o mesmo e o método do Z tem que ser igual.
  2. Olá. Quero colocar uma imagem de fundo num programa que estou a fazer, para isto criei uma textura. No entanto estou a ter os seguintes problemas: a textura está a aparecer com uns tons azulados, já tentei mudar os vértices que correspondem às cores mas só fica pior. E outro problema: não estou a conseguir com que ocupe a janela toda: caso coloque o 3ºvértice (z) a -1 fica a ocupar a janela toda mas fica à frente dos outros objetos, o que não é suposto, aliás a partir de -5 fica à frente dos mesmos, só -6 ou valores inferiores fazem com que não se sobreponha em relação aos objetos (tornando a imagem mais pequena). float vertices[] = { -1.0f, -1.0f, -6.0f, 0.0f, 0.0f, 0.00f, 0.0f, 1.0f, 0.0f, 1.0f, -1.0f, -6.0f, 1.0f, 0.0f, 0.00f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, -6.0f, 1.0f, 1.0f, 0.00f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, -6.0f, 1.0f, 1.0f, 0.00f, 0.0f, 1.0f, 0.0f, -1.0f, 1.0f, -6.0f, 0.0f, 1.0f, 0.00f, 0.0f, 1.0f, 0.0f, -1.0f, -1.0f, -6.0f, 0.0f, 0.0f, 0.00f, 0.0f, 1.0f, 0.0f}; Estive a pesquisar sobre a transparência duma textura, e supostamente teria que usar a função que já está declarada no código: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); No while do main: glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texture1); ourShader.use(); glm::mat4 model = glm::mat4(1.0f); glm::mat4 view = glm::mat4(1.0f); glm::mat4 projection = glm::mat4(1.0f); projection = glm::perspective(glm::radians(45.0f), (float) SCR_WIDTH / (float) SCR_HEIGHT, 0.1f, 100.0f); unsigned int modelLoc = glGetUniformLocation(ourShader.ID, "model"); unsigned int viewLoc = glGetUniformLocation(ourShader.ID, "view"); glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model)); glUniformMatrix4fv(viewLoc, 1, GL_FALSE, &view[0][0]); ourShader.setMat4("projection", projection); glBindVertexArray(VAO); glDrawArrays(GL_TRIANGLES, 0, 6); Finalmente para se ter uma ideia do que está a acontecer: imagem que não consigo pôr aqui
  3. Olá, Estou com o seguinte problema: num programa do Visual Studio em que uso c++, tenho algumas figuras que constituem uma casa como o telhado, a porta, a janela. Sendo que faço cada um deste elementos deslocar-se para um sítio, como está no código seguinte (aqui está o exemplo da porta, o da janela terá uma deslocação para um sítio diferente, já o telhado e as paredes ficam no mesmo sítio) que funciona bem: glm::mat4 mvp = glm::ortho(-40.0f, 40.0f, -40.0f, 40.0f); unsigned int matrix = glGetUniformLocation(programID, "mvp"); glUniformMatrix4fv(matrix, 1, GL_FALSE, &mvp[0][0]); glm::mat4 trans; trans = glm::translate(glm::mat4(1.0), glm::vec3(delta, delta, 0.0f)); //direção da deslocação (se puser -delta vai na direção contrária unsigned int m = glGetUniformLocation(programID, "trans"); glUniformMatrix4fv(m, 1, GL_FALSE, &trans[0][0]); Acontece que gostava que cada elemento que se desloca também rodasse sobre si próprio, ou seja fizesse uma rotação, o código que pus a seguir ao de cima não está a ter efeito, e não estou a conseguir resolver o assunto: glm:mat4 rot = glm::mat4(1.0f); rot = glm::rotate(rot, glm::radians(0.0f), glm::vec3(0.0f, 0.0f, 1.0f)); GLint r = glGetUniformLocation(programID, "rot"); glUniformMatrix4fv(r, 1, GL_FALSE, &rot[0][0]); Será que me podiam ajudar?
  4. Boas. Estou novamente com dificuldades em criar um Makefile. Tenho a seguinte estrutura de pastas: include/KHR/khrplatform.h include/glad/glad.h bin/ obj/ src/test.c src/glad.c Makefile Preciso de criar um Makefile para fazer os linkings e etc. Comecei através de um pequeno exemplo que encontrei na net: IDIR =../include CC=gcc CFLAGS=-I$(IDIR) ODIR=obj LDIR =../lib LIBS=-lm _DEPS = hellomake.h DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) _OBJ = hellomake.o hellofunc.o OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ)) $(ODIR)/%.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) hellomake: $(OBJ) $(CC) -o $@ $^ $(CFLAGS) $(LIBS) .PHONY: clean clean: rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ E alterei para: CC = gcc LIBS = -lm -Werror -g -pedantic -Wall -std=c99 CFLAGS = -I$(INCDIR) -lGL -lX11 -lGLU -lglut INCDIR = include OBJDIR = obj BINDIR = bin SRCDIR = src TARGET = $(BINDIR)/test _DEPS = khrplatform.h glad.h DEPS = $(patsubst %, $(INCDIR)/KHR/%, $(INCDIR)/glad/%, $(_DEPS)) _OBJ = test.o glad.o OBJ = $(patsubst %, %(OBJDIR)/%, $(_OBJ)) $(OBJDIR)/%.o: $(SRCDIR)/%.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) TARGET: $(OBJDIR)/%.o $(CC) -o $@ $^ $(CFLAGS) $(LIBS) .PHONY: clean clean: rm -f $(OBJDIR)/*.o *~ core $(INCDIR)/*~ Ainda só tenho um include no file test.c mas pelo menos a compilação devia correr e talvez dar erros no file test.c mas estou apenas a obter o seguinte: make: *** No rule to make target 'obj/%.o', needed by 'TARGET'. Stop.
  5. Apartir de amanhã vou ter mais tempo livre e decidi dedicar-me a aprender a parte gráfica da programação. Ainda só tenho ideias básicas acerca disso e antes de arriscar eu queria saber a opnião de alguém mais experiente nessa area. Será que essa componente é demasiado dificil para um iniciante como eu? Quanto tempo se leva mais ou menos a aprender e a fazer algo aceitável com texturas e shaders? Será que devo entrar pelos caminhos do glew e do glm, ou devo apenas aprender a estrutura do opengl em si para me servir de apoio para outras como o Vulkan? E já agora, e como eu sou uma pessoa que gosta de inventar e sair das regras... Há a possiblidade de eu queimar a placa gráfica?
  6. Viva maltinha, Eu quero gerar cubos a cair a partir da janela (em cima). Começando a cair de cima para baixo. (tipo tetris vá, só que apenas cubos). Alguém me sabe dizer como? :/ Urgente... Grande abraço a todos
  7. Boas malta, preciso de uma sugestão da vossa parte. Tenho um trabalho da universidade que se está a aproximar a entrega, e as nossas aulas práticas estão um bocado apertadas na matéria, e não queria deixar tudo para fazer em cima da hora uma vez que estamos a dar coisas relativamente básicas. O nosso trabalho é relativamente simples nesta primeira fase. Temos que fazer um gerador de figuras, e um leitor das figuras geradas. O exemplo dado no enunciado para o gerador é algo como executar o comando gerador esfera 1 10 10 output.3d em que "gerador" é o nome do programa gerador de figuras, "esfera" é a figura que queremos gerar, "1 10 10" é o raio, fatias e filas que queremos na esfera, e o "output.3d" é um ficheiro em que queremos guardar os dados da figura para depois ser lida. É dito pelo enunciado, que o ficheiro de output deve ser definido por nós, e como sugestão diz que devemos usar por exemplo o número de vértices da figura, para facilitar o processo de leitura. O programa leitura, simplesmente é escolher o ficheiro output que queremos, e desenhar a cena. A minha dúvida é face ao programa gerador. Eu para desenhar uma esfera, estava simplesmente a pensar utilizar a função para o exemplo em cima: glutWireSphere(1,10,10); E isto foi o que demos para desenhar uma figura deste género. Mas eu não precisaria de saber o número de vertices para este caso, o que me leva a pensar que o uso desta função para desenhar a cena em si, não seria muito correcto. Neste momento(esta semana) só ainda estamos a dar desenho de triângulos simples, com rotações e translações, e este trabalho já é para entregar para a semana. Calculo que para a semana já aprendamos a fazer isto, mas eu queria adiantar trabalho. Como é que eu poderia por exemplo guardar todos os triângulos gerados na cena, para os poder guardar num ficheiro e posteriormente fazer o display?
  8. Pessoal, instalei a biblioteca allegro (versão 4.4.2) no codeblocks (versão 13.12) no sistema Windows 8.1 mas dá um erro na hora de compilar, fica preto(tela como qualquer programa em c) como se fosse rodar mas não aparece a tela do jogo que deveria aparecer. O código não está errado pois roda em outro pc e é de um tutorial. JÁ TENTEI DIVERSOS TUTORIAIS. Abaixo aparece como se estivesse compilando e usando esses endereços mingw32-g++.exe -I"C:\Program Files (x86)\CodeBlocks\MinGW\include" -c "C:\Users\Erica\Desktop\ALLEGRO\Allegro en CodeBlocks\main.cpp" -o "C:\Users\Erica\Desktop\ALLEGRO\Allegro en CodeBlocks\main.o" mingw32-g++.exe -o "C:\Users\Erica\Desktop\ALLEGRO\Allegro en CodeBlocks\main.exe" "C:\Users\Erica\Desktop\ALLEGRO\Allegro en CodeBlocks\main.o" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libaclui.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libadvapi32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-monolith-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-monolith-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-monolith-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-monolith-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-monolith-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-monolith-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-monolith-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-monolith-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegro-4.4.2-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegrogl-0.4.4-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegrogl-0.4.4-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegrogl-0.4.4-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegrogl-0.4.4-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegrogl-0.4.4-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegrogl-0.4.4-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegrogl-0.4.4-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liballegrogl-0.4.4-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libapcups.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libavicap32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libavifil32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libbfd.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libbthprops.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcap.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcfgmgr32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcoldname.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcomctl32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcomdlg32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcrtdll.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcrypt32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libctl3d32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libd3d8.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libd3d9.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libd3dim.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libd3drm.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libd3dx8d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libd3dx9d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libd3dxof.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libddraw.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdhcpcsvc.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdinput.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdinput8.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdlcapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdmoguids.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdnsapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdplayx.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdpnaddr.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdpnet.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdpnlobby.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdpvoice.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdsetup.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdsound.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdxapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdxerr8.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdxerr9.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libdxguid.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libfaultrep.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libgdi32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libgdiplus.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libglaux.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libglu32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libgmon.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libhal.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libhid.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libhidparse.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libiberty.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libicmui.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libigmpagnt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libimagehlp.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libimm32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libiphlpapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libjpgalleg-2.6-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libjpgalleg-2.6-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libjpgalleg-2.6-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libjpgalleg-2.6-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libjpgalleg-2.6-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libjpgalleg-2.6-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libjpgalleg-2.6-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libjpgalleg-2.6-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libkernel32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libksproxy.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libksuser.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblargeint.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libloadpng-1.5-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libloadpng-1.5-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libloadpng-1.5-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libloadpng-1.5-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libloadpng-1.5-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libloadpng-1.5-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libloadpng-1.5-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libloadpng-1.5-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblogg-1.0-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblogg-1.0-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblogg-1.0-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblogg-1.0-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblogg-1.0-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblogg-1.0-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblogg-1.0-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblogg-1.0-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liblz32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libm.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmapi32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmcd.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmfcuia32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmgmtapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmingw32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmingwex.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmingwthrd.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmingwthrd_old.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname70.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname70d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname71.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname71d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname80.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname80d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname90.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname90d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname100.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldname100d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmoldnamed.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmpr.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmprapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmqrt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsacm32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmscms.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsdmo.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsimg32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcp60.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr70.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr70d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr71.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr71d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr80.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr80d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr90.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr90d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr100.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcr100d.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcrt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvcrtd.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmsvfw32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmswsock.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libnddeapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libndis.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libnetapi32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libnewdev.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libntdll.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libntoskrnl.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libodbc32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libodbccp32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libogg-1.2.1-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libogg-1.2.1-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libogg-1.2.1-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libogg-1.2.1-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libole32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liboleacc.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liboleaut32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libolecli32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liboledlg.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libolepro32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libolesvr32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libopcodes.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libopengl32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpenwin32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpkpd32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpng-1.4.0-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpng-1.4.0-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpng-1.4.0-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpng-1.4.0-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpowrprof.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpsapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpthread.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libpthread_s.dll.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libquartz.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\librapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\librasapi32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\librasdlg.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\librpcdce4.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\librpcns4.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\librpcrt4.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\librtm.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\librtutils.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libscrnsave.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libscrnsavw.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libscsiport.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libsecur32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libsetupapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libshell32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libshfolder.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libshlwapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libsnmpapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libstrmiids.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libsvrapi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libtapi32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libtdi.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libthunk32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\liburl.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libusbcamd.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libusbcamd2.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libuser32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libuserenv.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libusp10.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libuuid.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libuxtheme.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvdmdbg.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libversion.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvfw32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvideoprt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvorbis-1.3.2-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvorbis-1.3.2-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvorbis-1.3.2-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvorbis-1.3.2-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvorbisfile-1.3.2-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvorbisfile-1.3.2-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvorbisfile-1.3.2-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libvorbisfile-1.3.2-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwin32k.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwin32spl.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwininet.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwinmm.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwinpthread.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwinpthread.dll.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwinspool.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwinstrm.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwldap32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwow32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libws2_32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwsnmp32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwsock32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwst.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwtsapi32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libzlib-1.2.5-static-md.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libzlib-1.2.5-static-md-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libzlib-1.2.5-static-mt.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libzlib-1.2.5-static-mt-debug.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\Allegro\libaldat.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\Allegro\liballd.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\Allegro\liballd_s.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\Allegro\liballeg.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\Allegro\liballeg_s.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\Allegro\liballp.a" "C:\Program Files (x86)\CodeBlocks\MinGW\lib\Allegro\liballp_s.a" Process terminated with status 0 (0 minute(s), 2 second(s)) 0 error(s), 0 warning(s) (0 minute(s), 2 second(s)) Checking for existence: C:\Users\Erica\Desktop\ALLEGRO\Allegro en CodeBlocks\main.exe Executing: C:\Program Files (x86)\CodeBlocks/cb_console_runner.exe "C:\Users\Erica\Desktop\ALLEGRO\Allegro en CodeBlocks\main.exe" (in C:\Users\Erica\Desktop\ALLEGRO\Allegro en CodeBlocks) Process terminated with status -1073741510 (2 minute(s), 51 second(s))
  9. Estou a seguir os tutoriais do learnopengl.com e surgiu-me este problema. O que poderá ser? à esquerda é como está no tutorial e à direita é o que me aparece
  10. O que acham da biblioteca OpenGL? , Acham que é uma das melhores bibliotecas para desenvolver uma interface grafica se nao qual é?
  11. Boa noite pessoal, Sou novo aqui no forum e gostava da vossa ajuda para trabalho da faculdade. "Básicamente" o que eu queria era aplicar uma textura no topo do rato de um computador, qualquer coisa deste tipo http://pngimg.com/upload/small/computer_mouse_PNG7701.png O topo do rato está feito com triângulos de forma que faça o feitio da curva onde acentamos a mão. Até aqui tenho aplicado texturas em superficies da seguinte forma: Ex: glTexCoord2f(0, 1); glVertex2f(0, 1); glTexCoord2f(1, 1); glVertex2f(1, 1); Isto funciona quando estou aplicar texturas numa superficie "direita" já na curva que foi desenhada para o rato não funciona. Gostava da vossa ajuda nesta minha situação. Obrigado 😄
  12. Boas De momento estou a aprender c++ , escolhi isso mesmo para ser direccionado para fazer jogos de grande escala , estou ainda nos meus tutoriais e não tenho pressa em querer começar a desenvolver as minhas capacidades em game making pois ainda não adquiri as necessárias no resto , portanto este tópico basicamente é para ter uma ideia do que eu vou precisar para o fazer. Por exemplo. De inicio gostaria de utilizar um game engine em vez de criar o meu , pois parece algo bem complexo de entender . Por exemplo , quais as capacidades totais de um game engine ? Graficos e as physics do jogo ? Ao usar um game engine como o Cry Engine que é o que eu estou mais virado para fazer , tenho que aprender alguma linguagem especifica para aquilo ou posso trabalhar com c++ lá ? Como o exemplo do unity que temos que trabalhar em c# O que eu preciso para fazer um jogo com pés e cabeça , para além de uma equipa que quando estiver preparado vou tentar arranjar. -modeling -soundtracks -programming -story lines -graphics por enquanto isto é o que eu sei que preciso mas de certeza que me falta mais alguma coisa , depois também vi coisas em relação a directx , OpenGL e por ai , o que fazem esses programas dentro dos jogos ? são game engines também ?
  13. Bom dia, já a algum tempo que ando por volta deste assunto e esta semana resolvi pesquisar um pouco acerca de bibliotecas que façam load de texturas compativel com c++/opengl glut. Algumas despertaram-me a atenção, a biblioteca SOIL e a freeimage. Pelo que vi, a segunda é mais recente mas têm menos conteúdo na internet. Já que não tenho nenhuma experiência com esse tipo de bibliotecas resolvi fazer este tópico. Qual a que me aconselham a usar? Será uma mais simples e mais bem estruturada do que outra? Obrigado.
  14. Pessoal, estou a desenvolver um joguinho multiplayer com o winsock2 e com o opengl. Fiz uma versão teste do cliente na console aplication e correu tudo bem mas agora estou a ter algumas dificuldades em enquadrar o codigo com o resto do projeto. Fiz duas funções: a que iniciava o processo todo dos sockets... e outra para atualizar de frame em frame a troca de dados entre servidor/cliente. O problema é que, pelos vistos, ele só recebe os dados uma vez no inicio e depois para. As duas funções: #include "global.h" char buffer[uLTV+1]; void connect() { WSAData wsaData; if(WSAStartup(MAKEWORD(2,2),&wsaData)==SOCKET_ERROR) { printf("error de socket-1!\n"); } s=socket(AF_INET,SOCK_STREAM,0); if (s==INVALID_SOCKET) printf("socket e invalido!\n"); sockaddr_in you; you.sin_family=AF_INET; you.sin_addr.s_addr=inet_addr("127.0.0.1");// 85.245.61.211 // 192.168.10.2 you.sin_port=htons(20756); if(connect(s,(LPSOCKADDR)&you,sizeof(you))==-1) { WSACleanup(); printf("conexao falhou!!!\n"); system("pause"); } else { u_long iMode=1; ioctlsocket(s,FIONBIO,&iMode); buffer[uLTV]=10; buffer[0]=1; send(s,buffer,ULTV+1,0); } } void socketshare() { if(recv(s,buffer,ULTV+1,0)!=-1) { if(buffer[uLTV]==9) { buffer[uLTV]=NULL; float aa,bb,cc; int jogador; jogador=atoi((char*)strtok(buffer, "*")); xxj[jogador]=atof((char*)strtok(NULL, "*")); yyj[jogador]=atof((char*)strtok(NULL, "*")); zzj[jogador]=atof((char*)strtok(NULL, "*")); memset( buffer, NULL, sizeof(buffer)); }} sprintf(buffer,"%f*%f*%f*",xx,yy,zz); buffer[uLTV]=8; send(s,buffer,ULTV+1,0); memset( buffer, NULL, sizeof(buffer)); } Função Main: #include "global.h" int main(int argc, char **argv) { // init GLUT and create window glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(LadoTelax,LadoTelay); glutCreateWindow("3D World"); //keyboard and mouse func glutMouseFunc(mousepress); glutMotionFunc(camaramov); glutPassiveMotionFunc(camaramov); // register callbacks glutDisplayFunc(renderScene); glutReshapeFunc(changeSize); glutIdleFunc(renderScene); glEnable(GL_DEPTH_TEST); glutKeyboardUpFunc(keyup); glutKeyboardFunc(keydown); glutSpecialFunc(keybespecial); glutSetCursor(GLUT_CURSOR_NONE); glutTimerFunc(1000, FPS, 1); connect(); // enter GLUT event processing cycle glutMainLoop(); return 1; } A função connect é que supostamente inicia, a sockeshare a que troca os dados... esta é chamada pela função renderscreen para ser atualizada de frame em frame. Se conseguirem ver algum erro que me está a escapar ficaria muito agradecido 😛 Desde já obrigado.
  15. Bom dia. Eu estou a desenvolver uma camara 3d com a biblioteca glut do opengl. Está quase como terminada, apenas a movimentação da mesma está errada. Eu usei esta funçao: glutKeyboardFunc para saber que tecla está a ser pressionada. O problema desta função é que funciona do seguinte modo: 1->Se a tecla x está a ser pressionada executa a função de movimento 1 vez. 2->espera um determinado tempo. 3->se continuar a ser executada, agora, continua a função de movimento até a tecla x deixar de ser pressionada. Ou seja esta função apenas é util para a escrita, por exemplo. Já que esta função não convém á movimentação de objetos (como eu estou a fazer), queria uma função que captasse a tecla que está a ser primida e que seja continua. Já procurei pela internet e não encontrei tal, pelo que vim a perguntar se algum de voces sabe. Obrigado por ter lido este tópico ; )
  16. Boas! Queria começar um projecto que involve a app que estou a criar ligar-se a uma base de dados MySql. encontrei um tutorial em Androidhive.com e já tenho a aplicação a correr mas dá-me alguns erros quando tento ligar à base de dados. Alguém consegue ajudar? Agradecido desde já, Guilherme Correia http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/ JSON Parser Class: package com.example.androidhive; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } // function get json from url // by making HTTP POST or GET mehtod public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { // Making HTTP request try { // check for request method if(method == "POST"){ // request method is POST // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); }else if(method == "GET"){ // request method is GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } } AllProductsActivity Class: package com.example.androidhive; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.apache.http.NameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; public class AllProductsActivity extends ListActivity { // Progress Dialog private ProgressDialog pDialog; // Creating JSON Parser object JSONParser jParser = new JSONParser(); ArrayList<HashMap<String, String>> productsList; // url to get all products list private static String url_all_products = "http://192.168.1.68/android_connect/get_all_products.php"; // JSON Node names private static final String TAG_SUCCESS = "success"; private static final String TAG_PRODUCTS = "products"; private static final String TAG_PID = "pid"; private static final String TAG_NAME = "name"; // products JSONArray JSONArray products = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.all_products); // Hashmap for ListView productsList = new ArrayList<HashMap<String, String>>(); // Loading products in Background Thread new LoadAllProducts().execute(); // Get listview ListView lv = getListView(); // on seleting single product // launching Edit Product Screen lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // getting values from selected ListItem String pid = ((TextView) view.findViewById(R.id.pid)).getText() .toString(); // Starting new intent Intent in = new Intent(getApplicationContext(), EditProductActivity.class); // sending pid to next activity in.putExtra(TAG_PID, pid); // starting new activity and expecting some response back startActivityForResult(in, 100); } }); } // Response from Edit Product Activity @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // if result code 100 if (resultCode == 100) { // if result code 100 is received // means user edited/deleted product // reload this screen again Intent intent = getIntent(); finish(); startActivity(intent); } } /** * Background Async Task to Load all product by making HTTP Request * */ class LoadAllProducts extends AsyncTask<String, String, String> { /** * Before starting background thread Show Progress Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(AllProductsActivity.this); pDialog.setMessage("Loading products. Please wait..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } /** * getting All products from url * */ protected String doInBackground(String... args) { // Building Parameters List<NameValuePair> params = new ArrayList<NameValuePair>(); // getting JSON string from URL JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params); // Check your log cat for JSON reponse Log.d("All Products: ", json.toString()); try { // Checking for SUCCESS TAG int success = json.getInt(TAG_SUCCESS); if (success == 1) { // products found // Getting Array of Products products = json.getJSONArray(TAG_PRODUCTS); // looping through All Products for (int i = 0; i < products.length(); i++) { JSONObject c = products.getJSONObject(i); // Storing each json item in variable String id = c.getString(TAG_PID); String name = c.getString(TAG_NAME); // creating new HashMap HashMap<String, String> map = new HashMap<String, String>(); // adding each child node to HashMap key => value map.put(TAG_PID, id); map.put(TAG_NAME, name); // adding HashList to ArrayList productsList.add(map); } } else { // no products found // Launch Add New product Activity Intent i = new Intent(getApplicationContext(), NewProductActivity.class); // Closing all previous activities i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); } } catch (JSONException e) { e.printStackTrace(); } return null; } /** * After completing background task Dismiss the progress dialog * **/ protected void onPostExecute(String file_url) { // dismiss the dialog after getting all products pDialog.dismiss(); // updating UI from Background Thread runOnUiThread(new Runnable() { public void run() { /** * Updating parsed JSON data into ListView * */ ListAdapter adapter = new SimpleAdapter( AllProductsActivity.this, productsList, R.layout.list_item, new String[] { TAG_PID, TAG_NAME}, new int[] { R.id.pid, R.id.name }); // updating listview setListAdapter(adapter); } }); } } } LogCat error: 09-22 14:46:10.282 3782-3822/com.example.androidhive E/JSON Parser﹕ Error parsing data org.json.JSONException: Value Unknown of type java.lang.String cannot be converted to JSONObject 09-22 14:46:10.282 3782-3822/com.example.androidhive W/dalvikvm﹕ threadid=12: thread exiting with uncaught exception (group=0x41619ba8) 09-22 14:46:10.282 3782-3822/com.example.androidhive E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 Process: com.example.androidhive, PID: 3782 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:300) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) Caused by: java.lang.NullPointerException at com.example.androidhive.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:130) at com.example.androidhive.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:105) at android.os.AsyncTask$2.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) 09-22 14:46:10.723 3782-3782/com.example.androidhive E/WindowManager﹕ android.view.WindowLeaked: Activity com.example.androidhive.AllProductsActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41f33d98 V.E..... R......D 0,0-959,192} that was originally added here at android.view.ViewRootImpl.<init>(ViewRootImpl.java:346) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.app.Dialog.show(Dialog.java:286) at com.example.androidhive.AllProductsActivity$LoadAllProducts.onPreExecute(AllProductsActivity.java:117) at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587) at android.os.AsyncTask.execute(AsyncTask.java:535) at com.example.androidhive.AllProductsActivity.onCreate(AllProductsActivity.java:57) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) 09-22 14:46:59.230 4413-4413/com.example.androidhive I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13 09-22 14:46:59.260 4413-4413/com.example.androidhive D/OpenGLRenderer﹕ Enabling debug mode 0 09-22 14:47:00.611 4413-4440/com.example.androidhive D/dalvikvm﹕ GC_FOR_ALLOC freed 216K, 3% free 9348K/9596K, paused 15ms, total 15ms 09-22 14:47:01.072 4413-4440/com.example.androidhive E/JSON Parser﹕ Error parsing data org.json.JSONException: Value Unknown of type java.lang.String cannot be converted to JSONObject 09-22 14:47:01.082 4413-4440/com.example.androidhive W/dalvikvm﹕ threadid=12: thread exiting with uncaught exception (group=0x41619ba8) 09-22 14:47:01.082 4413-4440/com.example.androidhive E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 Process: com.example.androidhive, PID: 4413 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:300) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) Caused by: java.lang.NullPointerException at com.example.androidhive.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:130) at com.example.androidhive.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:105) at android.os.AsyncTask$2.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) 09-22 14:47:01.512 4413-4413/com.example.androidhive E/WindowManager﹕ android.view.WindowLeaked: Activity com.example.androidhive.AllProductsActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41f31658 V.E..... R......D 0,0-959,192} that was originally added here at android.view.ViewRootImpl.<init>(ViewRootImpl.java:346) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.app.Dialog.show(Dialog.java:286) at com.example.androidhive.AllProductsActivity$LoadAllProducts.onPreExecute(AllProductsActivity.java:117) at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587) at android.os.AsyncTask.execute(AsyncTask.java:535) at com.example.androidhive.AllProductsActivity.onCreate(AllProductsActivity.java:57) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method)
  17. Olá, fiz um Space Invaders e agora queria colocar textura no jogo, mas não estou conseguindo O código: #include <GL/glut.h> #include <math.h> #include <time.h> #include <stdio.h> #include <stdlib.h> #include <SOIL/SOIL.h> #define V 0.1 #define SPACEBAR 32.0 #define MAX_LATERAL 35 //inclinação máxima da nave #define MAX_MOVE 7 //distancia maxima lateral da nave #define MAX_TIROS_DIST 25 //distancia maxima dos tiros #define PART 50 //limite de particulas #define EXPLOSAO_TEMPO 0.03 //Velocida das particulas float T=0; float viewangle=0, tippangle=0; float nave_lateral=0.0, mov=0.0, nave_mov=0.0; int *keys; float bixosZ=0.0,bixosX=0.0,bixosDirecao=0.0,bixosContador=0.0; GLvoid CalculateVectorNormal(GLfloat fVert1[], GLfloat fVert2[], GLfloat fVert3[], GLfloat *fNormalX, GLfloat *fNormalY, GLfloat *fNormalZ) { GLfloat Qx, Qy, Qz, Px, Py, Pz; Qx = fVert2[0]-fVert1[0]; Qy = fVert2[1]-fVert1[1]; Qz = fVert2[2]-fVert1[2]; Px = fVert3[0]-fVert1[0]; Py = fVert3[1]-fVert1[1]; Pz = fVert3[2]-fVert1[2]; *fNormalX = Py*Qz - Pz*Qy; *fNormalY = Pz*Qx - Px*Qz; *fNormalZ = Px*Qy - Py*Qx; } typedef struct tiro{ float posx, posz; struct tiro *prox; }tiro; typedef struct enemy{ float posx, posz; int vivo; }bixo; tiro *listaT; bixo **bixos; void andaBixos(); void criaTiro(float p){ tiro *t = (tiro*)malloc(sizeof(tiro)); t->posx = p; t->posz = 1.9; t->prox = NULL; if(listaT==NULL) listaT = t; else{ tiro *aux = listaT; while(aux->prox!=NULL) aux = aux->prox; aux->prox = t; } } void andaTiro(){ tiro *t = listaT; if(t!=NULL){ while(t!=NULL){ t->posz += V; t = t->prox; } t = listaT; tiro *t2 = listaT->prox; if(t->posz >= MAX_TIROS_DIST){ free(t); listaT = t2; } } } void desenhaTiros(){ tiro *t = listaT; while(t!=NULL){ glPushMatrix(); glColor3f(1.0, 0.1, 0.1); glTranslatef(t->posx, 0.0, t->posz); glutSolidCube(0.1); glPopMatrix(); t = t->prox; } } void desenhaNave(int tam){ GLfloat triang1[3] = {0.3, 0.2, 0.0}; GLfloat triang2[3] = {1.0, 0.0, 0.0}; GLfloat triang3[3] = {0.3, 0.0, 1.5}; GLfloat normalx = 0.0, normaly= 0.0, normalz= 0.0; glTranslatef(nave_mov, 0.0, 0.0); if(mov > 1){ glRotatef(nave_lateral, 0.0, 0.0, 1.0); mov--; }else{ if(nave_lateral < 0) nave_lateral++; else if(nave_lateral > 0) nave_lateral--; glRotatef(nave_lateral, 0.0, 0.0, 1.0); } //Asas de cima glBegin(GL_TRIANGLES); triang1[0] = 0.2; triang1[1] = 0.2; triang1[2] = 0.0; triang2[0] = 1.0; triang2[1] = -0.1; triang2[2] = 0.0; triang3[0] = 0.2; triang3[1] = -0.1; triang3[2] = 1.5; CalculateVectorNormal(triang1, triang2, triang3, &normalx, &normaly, &normalz); glColor3f( 0.9, 0.9, 0.9 ); glNormal3f(normalx, normaly, normalz); glVertex3fv(triang1); glVertex3fv(triang2); glVertex3fv(triang3); glEnd(); glBegin(GL_TRIANGLES); triang1[0] = -0.2; triang1[1] = 0.2; triang1[2] = 0.0; triang2[0] = -1.0; triang2[1] = -0.1; triang2[2] = 0.0; triang3[0] = -0.2; triang3[1] = -0.1; triang3[2] = 1.5; CalculateVectorNormal(triang1, triang2, triang3, &normalx, &normaly, &normalz); glColor3f( 0.9, 0.9, 0.9 ); glNormal3f(normalx, normaly, normalz); glVertex3fv(triang1); glVertex3fv(triang2); glVertex3fv(triang3); glEnd(); //Asas de baixo glBegin(GL_TRIANGLES); triang1[0] = 0.2; triang1[1] = -0.1; triang1[2] = 0.0; triang2[0] = 1.0; triang2[1] = -0.1; triang2[2] = 0.0; triang3[0] = 0.2; triang3[1] = -0.1; triang3[2] = 1.5; CalculateVectorNormal(triang1, triang2, triang3, &normalx, &normaly, &normalz); glColor3f( 0.9, 0.9, 0.9 ); glNormal3f(normalx, normaly, normalz); glVertex3fv(triang1); glVertex3fv(triang2); glVertex3fv(triang3); glEnd(); glBegin(GL_TRIANGLES); triang1[0] = -0.2; triang1[1] = -0.1; triang1[2] = 0.0; triang2[0] = -1.0; triang2[1] = -0.1; triang2[2] = 0.0; triang3[0] = -0.2; triang3[1] = -0.1; triang3[2] = 1.5; CalculateVectorNormal(triang1, triang2, triang3, &normalx, &normaly, &normalz); glColor3f( 0.9, 0.9, 0.9 ); glNormal3f(normalx, normaly, normalz); glVertex3fv(triang1); glVertex3fv(triang2); glVertex3fv(triang3); glEnd(); //Asas traseiras glBegin(GL_TRIANGLES); triang1[0] = 0.2; triang1[1] = 0.2; triang1[2] = -0.1; triang2[0] = 0.45; triang2[1] = 0.45; triang2[2] = -0.2; triang3[0] = 0.2; triang3[1] = 0.2; triang3[2] = 0.5; CalculateVectorNormal(triang1, triang2, triang3, &normalx, &normaly, &normalz); glColor3f( 0.1, 0.1, 0.9); glNormal3f(normalx, normaly, normalz); glVertex3fv(triang1); glVertex3fv(triang2); glVertex3fv(triang3); glEnd(); glBegin(GL_TRIANGLES); triang1[0] = -0.2; triang1[1] = 0.2; triang1[2] = -0.1; triang2[0] = -0.45; triang2[1] = 0.45; triang2[2] = -0.2; triang3[0] = -0.2; triang3[1] = 0.2; triang3[2] = 0.5; CalculateVectorNormal(triang1, triang2, triang3, &normalx, &normaly, &normalz); glColor3f( 0.1, 0.1, 0.9); glNormal3f(normalx, normaly, normalz); glVertex3fv(triang1); glVertex3fv(triang2); glVertex3fv(triang3); glEnd(); //Cilindro central glPushMatrix(); glColor3f( 0.9, 0.9, 0.9); GLUquadric* a = gluNewQuadric(); gluQuadricDrawStyle(a, GLU_FILL); gluQuadricTexture(a, GL_TRUE); gluQuadricNormals(a, GLU_SMOOTH); gluCylinder(a, 0.3, 0.2, 1.5, 100, 100); glRotatef(-90, 1.0, 0.0, 0.0); glPopMatrix(); gluQuadricTexture(a, GL_FALSE); //Ponta glPushMatrix(); glColor3f( 0.1, 0.1, 0.9); glTranslatef(0.0, 0.0, 1.5); gluCylinder(a, 0.22, 0.01, 0.5, 100, 100); glRotatef(-90, 1.0, 0.0, 0.0); glPopMatrix(); //Tampa traseira glPushMatrix(); glColor3f( 0.1, 0.1, 0.9); glTranslatef(0.0, 0.0, -.2); gluCylinder(a, 0.0, 0.29, 0.2, 100, 100); glRotatef(-90, 1.0, 0.0, 0.0); glPopMatrix(); } void movimentos(){ if(keys[0]==1){ if(nave_lateral > -MAX_LATERAL) nave_lateral -= 2; if(nave_mov < MAX_MOVE) nave_mov += 0.1; mov = 5.0; } if(keys[1]==1){ if(nave_lateral < MAX_LATERAL) nave_lateral += 2; if(nave_mov > -MAX_MOVE) nave_mov -= 0.1; mov = 5.0; } if(keys[2]==1){ criaTiro(nave_mov); } andaBixos(); } void criaBixos(){ bixos = malloc(3*sizeof(bixo)); bixos[0] = malloc(5*sizeof(bixo)); bixos[1] = malloc(5*sizeof(bixo)); bixos[2] = malloc(5*sizeof(bixo)); int i,j; for(i=0; i<3; i++){ for(j=0; j<5; j++){ bixos[i][j].posx = j*2-4; bixos[i][j].posz = i*2+6; bixos[i][j].vivo = 1; } } bixosX=0.0; bixosDirecao=-1.0; bixosZ=2.0; bixosContador=0.0; } void desenhaBixos(){ glColor3f( 0.9, 0.9, 0.9 ); int i,j; GLUquadricObj *sphere = NULL;; sphere = gluNewQuadric(); gluQuadricDrawStyle(sphere, GLU_FILL); gluQuadricTexture(sphere, GL_TRUE); gluQuadricNormals(sphere, GLU_SMOOTH); for(i=0; i<3; i++){ for(j=0; j<5; j++){ if(bixos[i][j].vivo){ glPushMatrix(); glTranslatef(bixos[i][j].posx+bixosX, 0.0, bixos[i][j].posz+bixosZ); gluSphere(sphere, 0.4, 30, 30); glPopMatrix(); } } } } void andaBixos(){ if(bixosDirecao == -1){ if(bixosX <= -4){ bixosDirecao = 1; bixosX += 0.05; bixosZ -= 0.2; }else{ bixosX -= 0.05; } }else if(bixosDirecao == 1){ if(bixosX >= 4){ bixosDirecao = -1; bixosX -= 0.05; bixosZ -= 0.2; }else{ bixosX += 0.05; } } } void testaColisao(){ tiro *t = listaT; int i,j; float dist=0; for(i=0; i<3; i++){ for(j=0; j<5; j++){ t = listaT; if(t!=NULL){ tiro *t2 = t; while(t!=NULL){ dist = pow((t->posx - (bixos[i][j].posx+bixosX)),2) + pow((t->posz - (bixos[i][j].posz+bixosZ)),2); if(sqrt(dist) < 0.4 && bixos[i][j].vivo){ bixos[i][j].vivo = 0; if(t2 == t){ if(t->prox == NULL){ free(t); listaT = NULL; }else{ listaT = t->prox; free(t); } }else{ t2->prox = t->prox; free(t); } } t2 = t; t = t->prox; } } } } } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); //Movimenta a nave movimentos(); testaColisao(); //Desenha a nave glPushMatrix(); glRotatef(viewangle, 0.0, 1.0, 0.0); glRotatef(tippangle, 1.0, 0.0, 0.0); desenhaNave(1); glPopMatrix(); //Movimento os tiros glPushMatrix(); andaTiro(); glPopMatrix(); //Desenha os tiros glPushMatrix(); desenhaTiros(); glPopMatrix(); glPushMatrix(); desenhaBixos(); glPopMatrix(); glEnable(GL_NORMALIZE); glFlush(); } void Keys (int key, int x, int y) { switch (key) { case GLUT_KEY_LEFT: keys[0]=1; break; case GLUT_KEY_RIGHT: keys[1]=1; break; } glutPostRedisplay(); } void KeysUp (int key, int x, int y) { switch (key) { case GLUT_KEY_LEFT : keys[0]=0; break; case GLUT_KEY_RIGHT: keys[1]=0; break; } glutPostRedisplay(); } void otherKeys (unsigned char key, int x, int y) { switch (key) { case 32 : keys[2]=1; criaTiro(nave_mov); break; } glutPostRedisplay(); } void otherKeysUp (unsigned char key, int x, int y) { switch (key) { case 32 : keys[2]=0; criaTiro(nave_mov); break; } glutPostRedisplay(); } void resize(int w, int h){ glViewport(0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(65.0, (GLdouble) w/h, 1.0, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 15.0, -6.0, 0.0, 0.0, 5.0, 0.0, 1.0, 1.0); } void init (void) { criaBixos(); /* selecionar cor de fundo (preto) */ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glShadeModel(GL_SMOOTH); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1); glEnable(GL_DEPTH_TEST); GLfloat lightpos[] = {10.0, 10.0, 10.0, 1.0}; GLfloat lightcol[] = {0.9, 0.9, 0.9, 1.0}; GLfloat lightamb[] = {.5, .5, .5, 1.0}; glLightfv(GL_LIGHT0, GL_POSITION, lightpos); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightcol); glLightfv(GL_LIGHT1, GL_AMBIENT, lightamb); glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); } void timer(int value){ glutPostRedisplay(); glutTimerFunc(10, timer, 1); } int main(int argc, char** argv) { keys = malloc(3*sizeof(int)); keys[0]=0; keys[1]=0; keys[2]=0; glutInit(&argc, argv); glutInitDisplayMode (GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowSize (600, 600); glutInitWindowPosition (100, 100); glutCreateWindow ("Space Invaders 1.0"); init (); glutDisplayFunc(display); glutReshapeFunc(resize); glutIgnoreKeyRepeat(1); glutSpecialFunc(Keys); glutSpecialUpFunc(KeysUp); glutKeyboardFunc(otherKeys); glutKeyboardFunc(otherKeysUp); glutTimerFunc(30, timer, 1); glutMainLoop(); return 0; }
  18. Estou começando a programar o jogo Space Invaders em OpenGL e estou com algumas dúvidas. Primeiro tinha feito uma função que desenhava a nave (triangulo) e os aliens (quadrinhos) juntos, mas ao mover a nave, os aliens moviam-se juntos. Então fiz uma função para desenhar a nave e outra para desenhar os aliens, mas não estou conseguindo fazer com quem os dois apareçam na tela. Ajuda? OBS: O código ainda não está otimizado. #include <gl/gl.h> #include <gl/glut.h> void DesenhaNave(void); void DesenhaAliens(void); void Janela(GLint x, GLint y); void ParametrosVisualizacao(void); void Teclado(unsigned char tecla, GLint x, GLint y); void TeclasEspeciais(GLint tecla, GLint x, GLint y); GLint idJanela; GLfloat rotacao = 0; GLfloat movx = 0, movy = 0; GLfloat escala = 1; bool tiro = false; int main(int argc, char *argv[]){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(500,500); glutInitWindowPosition(0,0); idJanela = glutCreateWindow("Space Invaders"); glutDisplayFunc(DesenhaNave); glutDisplayFunc(DesenhaAliens); glutReshapeFunc(Janela); glutKeyboardFunc(Teclado); glutSpecialFunc(TeclasEspeciais); glutMainLoop(); return 0; } void DesenhaNave(void){ glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); ParametrosVisualizacao(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(movx, movy, 0); glScalef(escala, escala, 0); glRotatef(rotacao, 0, 1, 0); //desenha NAVE ESPACIAL glBegin(GL_TRIANGLES); glVertex2f(-1,-9); glVertex2f(0,-8); glVertex2f(1,-9); glEnd(); glFlush(); } void DesenhaAliens(void){ glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); ParametrosVisualizacao(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //desenha ALIENS glBegin(GL_QUADS); glVertex2f(-10,10); glVertex2f(-10,8); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-8,10); glVertex2f(-8,8); glEnd(); glBegin(GL_QUADS); glVertex2f(-7,10); glVertex2f(-7,8); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-5,10); glVertex2f(-5,8); glEnd(); glBegin(GL_QUADS); glVertex2f(-4,10); glVertex2f(-4,8); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-2,10); glVertex2f(-2,8); glEnd(); glBegin(GL_QUADS); glVertex2f(-1,10); glVertex2f(-1,8); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(1,10); glVertex2f(1,8); glEnd(); glBegin(GL_QUADS); glVertex2f(2,10); glVertex2f(2,8); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(4,10); glVertex2f(4,8); glEnd(); glBegin(GL_QUADS); glVertex2f(5,10); glVertex2f(5,8); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(7,10); glVertex2f(7,8); glEnd(); glBegin(GL_QUADS); glVertex2f(8,10); glVertex2f(8,8); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(10,10); glVertex2f(10,8); glEnd(); //segunda fileira glBegin(GL_QUADS); glVertex2f(-10,7); glVertex2f(-10,5); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-8,7); glVertex2f(-8,5); glEnd(); glBegin(GL_QUADS); glVertex2f(-7,7); glVertex2f(-7,5); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-5,7); glVertex2f(-5,5); glEnd(); glBegin(GL_QUADS); glVertex2f(-4,7); glVertex2f(-4,5); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-2,7); glVertex2f(-2,5); glEnd(); glBegin(GL_QUADS); glVertex2f(-1,7); glVertex2f(-1,5); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(1,7); glVertex2f(1,5); glEnd(); glBegin(GL_QUADS); glVertex2f(2,7); glVertex2f(2,5); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(4,7); glVertex2f(4,5); glEnd(); glBegin(GL_QUADS); glVertex2f(5,7); glVertex2f(5,5); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(7,7); glVertex2f(7,5); glEnd(); glBegin(GL_QUADS); glVertex2f(8,7); glVertex2f(8,5); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(10,7); glVertex2f(10,5); glEnd(); //terceira fileira glBegin(GL_QUADS); glVertex2f(-10,4); glVertex2f(-10,2); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-8,4); glVertex2f(-8,2); glEnd(); glBegin(GL_QUADS); glVertex2f(-7,4); glVertex2f(-7,2); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-5,4); glVertex2f(-5,2); glEnd(); glBegin(GL_QUADS); glVertex2f(-4,4); glVertex2f(-4,2); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-2,4); glVertex2f(-2,2); glEnd(); glBegin(GL_QUADS); glVertex2f(-1,4); glVertex2f(-1,2); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(1,4); glVertex2f(1,2); glEnd(); glBegin(GL_QUADS); glVertex2f(2,4); glVertex2f(2,2); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(4,4); glVertex2f(4,2); glEnd(); glBegin(GL_QUADS); glVertex2f(5,4); glVertex2f(5,2); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(7,4); glVertex2f(7,2); glEnd(); glBegin(GL_QUADS); glVertex2f(8,4); glVertex2f(8,2); // Especifica que a cor corrente é azul //glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(10,4); glVertex2f(10,2); glEnd(); glFlush(); } void Janela(GLint x, GLint y){ glViewport(0,0,x,y); } void ParametrosVisualizacao(void){ glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-20,20,-20,20); } void Teclado(unsigned char tecla, GLint x, GLint y){ switch(tecla){ case '+': escala++; break; case '-': escala--; break; case 'r': rotacao+=3; break; case 'R': rotacao-=3; break; } DesenhaNave(); DesenhaAliens(); } void TeclasEspeciais(GLint tecla, GLint x, GLint y){ switch(tecla){ // case GLUT_KEY_UP: movy++; // break; // case GLUT_KEY_DOWN: movy--; // break; case GLUT_KEY_LEFT: movx--; break; case GLUT_KEY_RIGHT: movx++; break; } DesenhaNave(); DesenhaAliens(); }
  19. estou com este exemplo de codigo e estou a obter o erro error C2668: 'cos' : ambiguous call to overloaded function alguem me pode ajudar a executar este codigo? /* * horse.c * 1.It uses animation by pressing the left button of your mouse. * 2.It manipulates 3D Object by using glTranslate*(), glRotate*(), glScale*(). * 3.The program renders illumination by defining the desired light location. * 4.It sets material properties for the objects in the scene. * 5.It maximize performance by using Display List command. */ #include <stdlib.h> #include <stdio.h> #include <math.h> #include <windows.h> #include <glut.h> //#include <GL/glut.h> #ifndef M_PI #define M_PI 3.141592654 #endif #define NECKCON_LIST 1 #define NECKHEA_LIST 2 #define SHOULDER_LIST 3 #define HORSEBOD_LIST 4 #define HORSEFOO_LIST 5 #define CONNECT_LIST 6 #define FOOTTOE_LIST 7 #define HORSEHAN_LIST 8 #define TAIL_LIST 9 #define HEADGUN_LIST 10 #define FOREHED_LIST 11 #define HORSUPLEG_LIST 12 #define MONTAIN_LIST 13 //Start Motion Rate Variables #define LIGHT_TURN_RATE 10 #define TURN_RATE_VIEW 10 #define LEG1_RATE 10 #define UPPER_LEG_RATE 10 #define GUNHEAD_RATE -1 //End Motion Rate Variables static int solid_object = 0, TurnLight1 = 0, TurnLight2 = 0; static int neck1 = 0, angle = 0, step = 0, turn = 0, foreh = 0, GunHeadMove = 0; static int hip11 = 0, hip21 = 0, heel1 = 0, heel2, ankle1 = 0, ankle2 = 0 ; static int firstleg = 0, secondleg = 0, thirdleg = 0, fourthleg = 0, leg = 0; float elevation = 0.0, distance = 0.0, frame = 3.0; GLUquadricObj *qobj; /* start of material definitions */ GLfloat mat_specular[] = {0.628281, 0.555802, 0.366065, 1.0}; GLfloat mat_ambient[] = {0.24725, 0.1995, 0.0745, 1.0}; GLfloat mat_diffuse[] = {0.75164, 0.60648, 0.22648, 1.0}; GLfloat mat_shininess[] = {128.0 * 0.4}; GLfloat mat_specular2[] = {0.508273, 0.508273, 0.508373}; GLfloat mat_ambient2[] = {0.19225, 0.19225, 0.19225}; GLfloat mat_diffuse2[] = {0.50754, 0.50754, 0.50754}; GLfloat mat_shininess2[] = {128.0 * 0.6}; GLfloat mat_specular3[] = {0.296648, 0.296648, 0.296648}; GLfloat mat_ambient3[] = {0.25, 0.20725, 0.20725}; GLfloat mat_diffuse3[] = {1.0, 0.829, 0.829}; GLfloat mat_shininess3[] = {128.0 * 0.088}; GLfloat mat_specular4[] = {0.633, 0.727811, 0.633}; GLfloat mat_ambient4[] = {0.0215, 0.1745, 0.0215}; GLfloat mat_diffuse4[] = {0.07568, 0.61424, 0.07568}; GLfloat mat_shininess4[] = {128.0 * 0.6}; GLfloat mat_specular5[] = {0.60, 0.60, 0.50}; GLfloat mat_ambient5[] = {0.0, 0.0, 0.0}; GLfloat mat_diffuse5[] = {0.5, 0.5, 0.0}; GLfloat mat_shininess5[] = {128.0 * 0.25}; /* end of material definitions */ //Use for Debugging of Movements-Start void RaiseLeg1Forward(void) { foreh = (foreh + UPPER_LEG_RATE) % 360; } void //MaterialSet(float spec, float amb, float diff, float shin) MaterialSet(GLfloat spec[], GLfloat amb[], GLfloat diff[], GLfloat shin[]) //MaterialSet(void) { glMaterialfv(GL_FRONT, GL_SPECULAR, spec); glMaterialfv(GL_FRONT, GL_AMBIENT, amb); glMaterialfv(GL_FRONT, GL_DIFFUSE, diff); glMaterialfv(GL_FRONT, GL_SHININESS, shin); } void GunMove(void) { GunHeadMove = (GunHeadMove + GUNHEAD_RATE); } //Use for Debugging of Movements-Start void Box(float width, float height, float depth, char solid) { char i, j = 0; float x = width / 2.0, y = height / 2.0, z = depth / 2.0; for (i = 0; i < 4; i++) { glRotatef(90.0, 0.0, 0.0, 1.0); if (j) { if (!solid) glBegin(GL_LINE_LOOP); else glBegin(GL_QUADS); glNormal3f(-1.0, 0.0, 0.0); glVertex3f(-x, y, z); glVertex3f(-x, -y, z); glVertex3f(-x, -y, -z); glVertex3f(-x, y, -z); glEnd(); if (solid) { glBegin(GL_TRIANGLES); glNormal3f(0.0, 0.0, 1.0); glVertex3f(0.0, 0.0, z); glVertex3f(-x, y, z); glVertex3f(-x, -y, z); glNormal3f(0.0, 0.0, -1.0); glVertex3f(0.0, 0.0, -z); glVertex3f(-x, -y, -z); glVertex3f(-x, y, -z); glEnd(); } j = 0; } else { if (!solid) glBegin(GL_LINE_LOOP); else glBegin(GL_QUADS); glNormal3f(-1.0, 0.0, 0.0); glVertex3f(-y, x, z); glVertex3f(-y, -x, z); glVertex3f(-y, -x, -z); glVertex3f(-y, x, -z); glEnd(); if (solid) { glBegin(GL_TRIANGLES); glNormal3f(0.0, 0.0, 1.0); glVertex3f(0.0, 0.0, z); glVertex3f(-y, x, z); glVertex3f(-y, -x, z); glNormal3f(0.0, 0.0, -1.0); glVertex3f(0.0, 0.0, -z); glVertex3f(-y, -x, -z); glVertex3f(-y, x, -z); glEnd(); } j = 1; } } } void Triad(float width, float height, float depth, char solid) { char i, j = 0; float x = width / 2.0, y = height / 2.0, z = depth / 2.0; for (i = 0; i < 3; i++) { glRotatef(90.0, 0.0, 0.0, 1.0); if (j) { if (!solid) glBegin(GL_LINE_LOOP); else glBegin(GL_TRIANGLE_FAN); glNormal3f(-1.0, 0.0, 0.0); glVertex3f(-x, y, z); glVertex3f(-x, -y, z); glVertex3f(-x, -y, -z); glVertex3f(-x, y, -z); glEnd(); if (solid) { glBegin(GL_TRIANGLE_FAN); glNormal3f(0.0, 0.0, 1.0); glVertex3f(0.0, 0.0, z); glVertex3f(-x, y, z); glVertex3f(-x, -y, z); glNormal3f(0.0, 0.0, -1.0); glVertex3f(0.0, 0.0, -z); glVertex3f(-x, -y, -z); glVertex3f(-x, y, -z); glEnd(); } j = 0; } else { if (!solid) glBegin(GL_LINE_LOOP); else glBegin(GL_TRIANGLE_FAN); glNormal3f(-1.0, 0.0, 0.0); glVertex3f(-y, x, z); glVertex3f(-y, -x, z); glVertex3f(-y, -x, -z); glVertex3f(-y, x, -z); glEnd(); if (solid) { glBegin(GL_TRIANGLE_FAN); glNormal3f(0.0, 0.0, 1.0); glVertex3f(0.0, 0.0, z); glVertex3f(-y, x, z); glVertex3f(-y, -x, z); glNormal3f(0.0, 0.0, -1.0); glVertex3f(0.0, 0.0, -z); glVertex3f(-y, -x, -z); glVertex3f(-y, x, -z); glEnd(); } j = 1; } } } void Mountain(char solid) { int i, j; glNewList(MONTAIN_LIST, GL_COMPILE); MaterialSet(mat_specular4, mat_ambient4, mat_diffuse4, mat_shininess4); glColor3f(0.0, 0.0, 1.0); //Triad(2.75, 1.25, 2.5, solid); Box(20.0, 0.5, 30.0, solid); MaterialSet(mat_specular4, mat_ambient4, mat_diffuse4, mat_shininess4); glColor3f(0.6, 0.6, 0.6); glTranslatef(0.0, 0.0, -10.0); for (j = 0; j < 6; j++) { for (i = 0; i < 2; i++) { if (i) glScalef(-1.0, 1.0, 1.0); glTranslatef(10.0, 4.0, 0.0); Box(4.0, 8.0, 2.0, solid); // Triad(2.75, 2.25, 1.5, solid); glTranslatef(0.0, -1.0, -3.0); Box(4.0, 6.0, 2.0, solid); //Triad(3.75, 3.25, 2.5, solid); glTranslatef(-10.0, -3.0, 3.0); } glScalef(-1.0, 1.0, 1.0); glTranslatef(0.0, 0.0, 5.0); } glEndList(); } void Octagon(float side, float height, char solid) { char j; float x = sin(0.785398163) * side, y = side / 2.0, z = height / 2.0, c; c = x + y; for (j = 0; j < 8; j++) { glTranslatef(-c, 0.0, 0.0); if (!solid) glBegin(GL_LINE_LOOP); else glBegin(GL_QUADS); glNormal3f(-1.0, 0.0, 0.0); glVertex3f(0.0, -y, z); glVertex3f(0.0, y, z); glVertex3f(0.0, y, -z); glVertex3f(0.0, -y, -z); glEnd(); glTranslatef(c, 0.0, 0.0); if (solid) { glBegin(GL_TRIANGLES); glNormal3f(0.0, 0.0, 1.0); glVertex3f(0.0, 0.0, z); glVertex3f(-c, -y, z); glVertex3f(-c, y, z); glNormal3f(0.0, 0.0, -1.0); glVertex3f(0.0, 0.0, -z); glVertex3f(-c, y, -z); glVertex3f(-c, -y, -z); glEnd(); } glRotatef(45.0, 0.0, 0.0, 1.0); } } void gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GLint teeth, GLfloat tooth_depth) { GLint i; GLfloat r0, r1, r2; GLfloat angle, da; GLfloat u, v, len; r0 = inner_radius; r1 = outer_radius - tooth_depth / 2.0; r2 = outer_radius + tooth_depth / 2.0; da = 2.0 * M_PI / teeth / 4.0; glShadeModel(GL_FLAT); glNormal3f(0.0, 0.0, 1.0); /* draw front face */ glBegin(GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); if (i < teeth) { glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); } } glEnd(); /* draw front sides of teeth */ glBegin(GL_QUADS); da = 2.0 * M_PI / teeth / 4.0; for (i = 0; i < teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); } glEnd(); glNormal3f(0.0, 0.0, -1.0); /* draw back face */ glBegin(GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); if (i < teeth) { glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); } } glEnd(); /* draw back sides of teeth */ glBegin(GL_QUADS); da = 2.0 * M_PI / teeth / 4.0; for (i = 0; i < teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); } glEnd(); /* draw outward faces of teeth */ glBegin(GL_QUAD_STRIP); for (i = 0; i < teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); u = r2 * cos(angle + da) - r1 * cos(angle); v = r2 * sin(angle + da) - r1 * sin(angle); len = sqrt(u * u + v * v); u /= len; v /= len; glNormal3f(v, -u, 0.0); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); glNormal3f(cos(angle), sin(angle), 0.0); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); glNormal3f(v, -u, 0.0); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); glNormal3f(cos(angle), sin(angle), 0.0); } glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); glEnd(); glShadeModel(GL_SMOOTH); /* draw inside radius cylinder */ glBegin(GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0 * M_PI / teeth; glNormal3f(-cos(angle), -sin(angle), 0.0); glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); } glEnd(); } void RightTurnLight(void) { TurnLight1 = (TurnLight1 + LIGHT_TURN_RATE) % 360; } void LeftTurnLight(void) { TurnLight1 = (TurnLight1 - LIGHT_TURN_RATE) % 360; } void ForwardLight(void) { TurnLight2 = (TurnLight2 + LIGHT_TURN_RATE) % 360; } void BackwardLight(void) { TurnLight2 = (TurnLight2 - LIGHT_TURN_RATE) % 360; } /* end of light source position functions */ void RightTurn(void) { turn = (turn - TURN_RATE_VIEW) % 360; } void LeftTurn(void) { turn = (turn + TURN_RATE_VIEW) % 360; } void disable(void) { glDisable(GL_LIGHTING); glDisable(GL_DEPTH_TEST); glDisable(GL_NORMALIZE); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); } void lighting(void) { GLfloat position[] = {0.0, 0.0, 5.0, 1.0}; glRotatef((GLfloat) TurnLight1, 1.0, 0.0, 0.0); glRotatef((GLfloat) TurnLight2, 0.0, 1.0, 0.0); glRotatef(0.0, 1.0, 0.0, 0.0); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glDepthFunc(GL_LESS); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glLightfv(GL_LIGHT0, GL_POSITION, position); glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 80.0); glTranslatef(0.0, 0.0, 2.0); glDisable(GL_LIGHTING); Box(0.1, 0.1, 0.1, 0); glEnable(GL_LIGHTING); } //sphere neck void NeckConnect(char solid) { glNewList(NECKCON_LIST, GL_COMPILE); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.0, 1.0, 0.0); if (!solid) gluQuadricDrawStyle(qobj, GLU_LINE); gluSphere(qobj, 0.6, 16, 16); glEndList(); } void NeckHead(char solid) { int i; glNewList(NECKHEA_LIST, GL_COMPILE); MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); Box(1.0, 2.0, 1.0, solid); glTranslatef(0.0, -0.95, 0.0); glRotatef(90.0, 1.0, 0.0, 0.0); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.5, 0.5, 0.5); if (!solid) gluQuadricDrawStyle(qobj, GLU_LINE); gluCylinder(qobj, 0.4, 0.4, 1.5, 16, 10); MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); glRotatef(-90.0, 1.0, 0.0, 0.0); glTranslatef(-0.4, -1.85, 0.0); glRotatef(90.0, 0.0, 1.0, 0.0); for (i = 0; i < 2; i++) { if (!solid) gluQuadricDrawStyle(qobj, GLU_LINE); if (i) gluCylinder(qobj, 0.5, 0.5, 0.8, 16, 10); else gluCylinder(qobj, 0.2, 0.2, 0.8, 16, 10); } for (i = 0; i < 2; i++) { if (i) glScalef(-1.0, 1.0, 1.0); if (!solid) gluQuadricDrawStyle(qobj, GLU_LINE); if (i) glTranslatef(0.0, 0.0, 0.8); gluDisk(qobj, 0.2, 0.5, 16, 10); if (i) glTranslatef(0.0, 0.0, -0.8); } glScalef(-1.0, 1.0, 1.0); glRotatef(-90.0, 0.0, 1.0, 0.0); glTranslatef(0.4, 2.9, 0.0); glEndList(); } Shoulder(char solid) { int i; glNewList(SHOULDER_LIST, GL_COMPILE); MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); Octagon(0.7, 0.5, solid); for (i = 0; i < 2; i++) { if (i) glScalef(-1.0, 1.0, 1.0); glTranslatef(1.0, 0.0, 0.0); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.5, 0.5, 0.5); if (!solid) gluQuadricDrawStyle(qobj, GLU_LINE); gluSphere(qobj, 0.2, 16, 16); glTranslatef(-1.0, 0.0, 0.0); } glScalef(-1.0, 1.0, 1.0); glEndList(); } void HorseBody(char solid) { glNewList(HORSEBOD_LIST, GL_COMPILE); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(1.0, 1.0, 0.0); glTranslatef(1.0, 1.0, 1.0); if (!solid) { gluQuadricDrawStyle(qobj, GLU_LINE); } MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.0, 1.0, 0.0); glRotatef(90.0, 1.0 , 0.0, 0.0); gluCylinder(qobj, 2.0, 1.5, 2.0, 16, 10); glEndList(); } void HorseUpLeg(char solid) { int i; glNewList(HORSUPLEG_LIST, GL_COMPILE); MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); if (!solid) { gluQuadricDrawStyle(qobj, GLU_LINE); } glTranslatef(0.0, -1.0, 0.0); Box(0.4, 1.0, 0.7, solid); glTranslatef(0.0, -0.65, 0.0); for (i = 0; i < 5; i++) { Box(1.2, 0.3, 1.2, solid); glTranslatef(0.0, -0.2, 0.0); Box(1.0, 0.1, 1.0, solid); glTranslatef(0.0, -0.2, 0.0); } glTranslatef(0.0, -0.15, -0.4); Box(2.0, 0.5, 2.0, solid); glTranslatef(0.0, -0.3, -0.2); glRotatef(90.0, 1.0, 0.0, 0.0); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.5, 0.5, 0.5); gluCylinder(qobj, 0.6, 0.6, 3.0, 16, 10); MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); glRotatef(-90.0, 1.0, 0.0, 0.0); glTranslatef(0.0, -1.5, 1.0); Box(1.5, 3.0, 0.5, solid); glTranslatef(0.0, -1.75, -0.8); Box(2.0, 0.5, 2.0, solid); glTranslatef(0.0, -0.9, -0.85); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.5, 0.5, 0.5); gluCylinder(qobj, 0.8, 0.8, 1.8, 16, 10); for (i = 0; i < 2; i++) { if (i) glScalef(-1.0, 1.0, 1.0); if (!solid) gluQuadricDrawStyle(qobj, GLU_LINE); if (i) glTranslatef(0.0, 0.0, 1.8); gluDisk(qobj, 0.0, 0.8, 16, 10); if (i) glTranslatef(0.0, 0.0, -1.8); } glScalef(-1.0, 1.0, 1.0); glEndList(); } void HorseLowLeg(char solid) { float k, l; MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); for (k = 0.0; k < 2.0; k++) { for (l = 0.0; l < 2.0; l++) { glPushMatrix(); glTranslatef(k, 0.0, l); MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); Box(1.0, 0.5, 1.0, solid); glTranslatef(0.0, -0.45, 0.0); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.5, 0.5, 0.5); if (!solid) glutWireSphere(0.2, 16, 10); else glutSolidSphere(0.2, 16, 10); if (leg) glRotatef((GLfloat) heel1, 1.0, 0.0, 0.0); else glRotatef((GLfloat) heel2, 1.0, 0.0, 0.0); /* glTranslatef(0.0, -0.2, 0.0); */ glTranslatef(0.0, -1.7, 0.0); MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); Box(0.25, 3.0, 0.25, solid); glTranslatef(0.0, -1.7, 0.0); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.5, 0.5, 0.5); if (!solid) glutWireSphere(0.2, 16, 10); else glutSolidSphere(0.2, 16, 10); if (leg) glRotatef((GLfloat) - heel1, 1.0, 0.0, 0.0); else glRotatef((GLfloat) - heel2, 1.0, 0.0, 0.0); glTranslatef(0.0, -0.45, 0.0); MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); Box(1.0, 0.5, 1.0, solid); if (!k && !l) { int j; glTranslatef(-0.4, -0.8, 0.5); if (leg) glRotatef((GLfloat) ankle1, 1.0, 0.0, 0.0); else glRotatef((GLfloat) ankle2, 1.0, 0.0, 0.0); glRotatef(90.0, 0.0, 1.0, 0.0); if (!solid) gluQuadricDrawStyle(qobj, GLU_LINE); gluCylinder(qobj, 0.8, 0.8, 1.8, 16, 10); for (j = 0; j < 2; j++) { if (!solid) gluQuadricDrawStyle(qobj, GLU_LINE); if (j) { glScalef(-1.0, 1.0, 1.0); glTranslatef(0.0, 0.0, 1.8); } gluDisk(qobj, 0.0, 0.8, 16, 10); if (j) glTranslatef(0.0, 0.0, -1.8); } glScalef(-1.0, 1.0, 1.0); glRotatef(-90.0, 0.0, 1.0, 0.0); glTranslatef(0.95, -0.8, 0.0); glCallList(HORSEFOO_LIST); } glPopMatrix(); } } } void HorseFoot(char solid) { glNewList(HORSEFOO_LIST, GL_COMPILE); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.5, 0.5, 0.5); glRotatef(90.0, 1.0, 0.0, 0.0); Octagon(1.5, 0.6, solid); glRotatef(-90.0, 1.0, 0.0, 0.0); glEndList(); } void Connector(char solid) { glNewList(CONNECT_LIST, GL_COMPILE); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.0, 1.0, 0.0); //Green Knee glRotatef(95.0, 1.0, 0.0, 0.0); gear(1.25, 2.0, 1.25, 20, 0.7); glColor3f(0.0, 1.0, 0.0); //Green Knee gear(1.25, 2.0, 1.25, 20, 0.7); glRotatef(-95.0, 1.0, 0.0, 0.0); glEndList(); } void FootToes(char solid) { glNewList(FOOTTOE_LIST, GL_COMPILE); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.0, 1.0, 0.0); //Green Knee glRotatef(95.0, 1.0, 0.0, 0.0); gear(1.25, 2.0, 1.25, 3, 0.7); glColor3f(0.0, 1.0, 0.0); //Green Knee glRotatef(-95.0, 1.0, 0.0, 0.0); glEndList(); } void Tail(char solid) { //t i, j, k = 0; glNewList(TAIL_LIST, GL_COMPILE); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glPushMatrix(); glPushMatrix(); glTranslatef(-0.25, 0.25, 0.0); Box(1.0, 0.25, 0.5, solid); //width, height, depth glPopMatrix(); glRotatef(90.0, 0.0, 0.0, 1.0); glTranslatef(-0.5, -0.25, 0.0); Triad(1.75, 0.25, 0.5, solid); //width, height, depth glPopMatrix(); glEndList(); } void HeadGun(char solid) { int i; glNewList(HEADGUN_LIST, GL_COMPILE); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glColor3f(0.5, 0.5, 0.5); if (!solid) { gluQuadricDrawStyle(qobj, GLU_LINE); } gluCylinder(qobj, 0.5, 0.5, 0.5, 16, 10); glTranslatef(0.0, 0.0, 0.5); gluDisk(qobj, 0.0, 0.5, 16, 10); for (i = 0; i < 5; i++) { glRotatef(72.0, 0.0, 0.0, 1.0); glTranslatef(0.0, 0.3, 0.0); if (!solid) { gluQuadricDrawStyle(qobj, GLU_LINE); } gluCylinder(qobj, 0.15, 0.15, 2.0, 16, 10); gluCylinder(qobj, 0.06, 0.06, 2.0, 16, 10); glTranslatef(0.0, 0.0, 2.0); gluDisk(qobj, 0.1, 0.15, 16, 10); gluCylinder(qobj, 0.1, 0.1, 0.1, 16, 5); glTranslatef(0.0, 0.0, 0.1); gluDisk(qobj, 0.06, 0.1, 16, 5); glTranslatef(0.0, -0.3, -2.1); } glEndList(); } void ForeHead(char solid) { char i; glNewList(FOREHED_LIST, GL_COMPILE); MaterialSet(mat_specular, mat_ambient, mat_diffuse, mat_shininess); glColor3f(1.0, 1.0, 0.0); for (i = 0; i < 5; i++) { glTranslatef(0.0, -0.1, -0.15); Box(0.6, 0.8, 0.2, solid); glTranslatef(0.0, 0.1, -0.15); Box(0.4, 0.6, 0.1, solid); } glTranslatef(0.0, 0.0, 2.45); Box(1.0, 1.0, 2.0, solid); glTranslatef(0.0, 0.0, -1.0); glEndList(); } void DrawHorse(void) { int i, j; // glPushMatrix(); //overall2 glScalef(0.85, 0.85, 0.85); glTranslatef(0.0, 0.0, 0.0); glPushMatrix(); glScalef(0.75, 0.75, 0.75); glPushMatrix(); glTranslatef(-1.5, 0.0, 0.0); glScalef(0.75, 0.75, 0.75); glCallList(NECKCON_LIST); glPopMatrix(); glPushMatrix(); glTranslatef(-2.0, 0.5, 0.0); glScalef(0.5, 0.5, 0.5); glRotatef(180.0, 0.0, 0.0, 1.0); glRotatef(45.0, 0.0, 0.0, 1.0); glRotatef(90.0, 0.0, 1.0, 0.0); glCallList(NECKHEA_LIST); glPopMatrix(); glPushMatrix(); glTranslatef(-1.0, -0.5, 0.0); glRotatef(90.0, 0.0, 1.0, 0.0); glRotatef(45.0, 1.0, 0.0, 0.0); glCallList(SHOULDER_LIST); //octagon glPopMatrix(); glPushMatrix(); glTranslatef(0.0, -1.25, 0.0); glScalef(2.5, 1.5, 2.0); glCallList(NECKCON_LIST); //sphere glPopMatrix(); glPushMatrix(); glTranslatef(1.5, -1.25, 0.0); glScalef(2.5, 1.5, 2.0); glCallList(NECKCON_LIST); //sphere glPopMatrix(); glPushMatrix(); glTranslatef(-0.25, -0.75, 0.75); glScalef(0.5, 0.5, 0.5); glRotatef(180.0, 0.0, 0.0, 1.0); glRotatef(45.0, 0.0, 0.0, 1.0); glRotatef(90.0, 0.0, 1.0, 0.0); glCallList(HORSEBOD_LIST); //Cone glPopMatrix(); glPopMatrix(); glPushMatrix(); glRotatef(firstleg, 0.0, 0.0, 1.0); //{ //1st Up Leg glPushMatrix(); glTranslatef(-0.28, -1.0, -0.5); glScalef(0.15, 0.15, 0.15); glRotatef(90.0, 0.0, 1.0, 0.0); glCallList(HORSUPLEG_LIST); glPopMatrix(); //1st Low Leg glPushMatrix(); glTranslatef(-0.5, -2.38, -0.4); glScalef(0.25, 0.25, 0.25); glRotatef(90.0, 0.0, 1.0, 0.0); HorseLowLeg(i); glPopMatrix(); glPopMatrix(); //} glPushMatrix(); glRotatef(fourthleg, 0.0, 0.0, 1.0); //{ //4rth Up Leg glPushMatrix(); glTranslatef(-0.28, -1.0, 0.9); glScalef(0.15, 0.15, 0.15); glRotatef(90.0, 0.0, 1.0, 0.0); glCallList(HORSUPLEG_LIST); glPopMatrix(); //4rth Low Leg glPushMatrix(); glTranslatef(-0.5, -2.38, 1.0); glScalef(0.25, 0.25, 0.25); glRotatef(90.0, 0.0, 1.0, 0.0); HorseLowLeg(i); glPopMatrix(); glPopMatrix(); //} glPushMatrix(); glRotatef(secondleg, 0.0, 0.0, 1.0); //{ //2nd Up Leg glPushMatrix(); glTranslatef(1.22, -1.0, -0.5); glScalef(0.15, 0.15, 0.15); glRotatef(90.0, 0.0, 1.0, 0.0); glCallList(HORSUPLEG_LIST); glPopMatrix(); //2nd Low Leg glPushMatrix(); glTranslatef(1.0, -2.38, -0.4); glScalef(0.25, 0.25, 0.25); glRotatef(90.0, 0.0, 1.0, 0.0); HorseLowLeg(i); glPopMatrix(); glPopMatrix(); //End 2nd Leg} glPushMatrix(); glRotatef(thirdleg, 0.0, 0.0, 1.0); //{ //3rd Up Leg glPushMatrix(); glTranslatef(1.22, -1.0, 0.9); glScalef(0.15, 0.15, 0.15); glRotatef(90.0, 0.0, 1.0, 0.0); glCallList(HORSUPLEG_LIST); glPopMatrix(); //3rd Low Leg glPushMatrix(); glTranslatef(1.0, -2.38, 1.0); glScalef(0.25, 0.25, 0.25); glRotatef(90.0, 0.0, 1.0, 0.0); HorseLowLeg(i); glPopMatrix(); glPopMatrix(); //End 3rd Leg} glPushMatrix(); //head group glRotatef(65.0, 0.0, 1.0, 0.0); glTranslatef(2.0, -1.0, -2.0); glPushMatrix(); glScalef(0.65, 0.65, 0.65); glTranslatef(-3.75, 3.25, 0.0); glRotatef(90.0, 1.0, 1.0, 0.0); glRotatef(-80.0, 0.0, 1.0, 0.0); glRotatef(150.0, 0.0, 1.0, 0.0); glRotatef(90.0, 1.0, 0.0, 0.0); glTranslatef(-0.5, 0.0, 1.0); //glTranslatef(1.0, GunHeadMove, 0.0); glTranslatef(1.0, -1.0, 0.0); glCallList(HEADGUN_LIST); glPopMatrix(); glPushMatrix(); glScalef(0.75, 0.75, 0.75); glTranslatef(-3.5, 3.5, 1.0); glRotatef(90.0, 1.0, 1.0, 0.0); glRotatef(-80.0, 0.0, 1.0, 0.0); // glRotatef(foreh, 1.0, 0.0, 0.0); glRotatef(100.0, 1.0, 0.0, 0.0); glCallList(FOREHED_LIST); glPopMatrix(); glPopMatrix(); //head group glPushMatrix(); glTranslatef(2.5, -1.0, 0.0); glCallList(TAIL_LIST); glPopMatrix(); glPopMatrix(); //Start Mountain glPushMatrix(); glRotatef(90.0, 0.0, 1.0, 0.0); //if (distance >= 20.136) if (distance >= 6.5) //if (distance <= 20.136) distance = 0.0; //glTranslatef(0.0, -5.0, -distance); glTranslatef(0.0, -5.0, distance); glCallList(MONTAIN_LIST); glTranslatef(0.0, 0.0, 10.0); glCallList(MONTAIN_LIST); glPopMatrix(); //End Mountain //overall2 glPopMatrix(); } void horse_walk(void) { float angle; static int step; if (step == 0 || step == 2) { /* for(frame=3.0; frame<=21.0; frame=frame+3.0){ */ if (frame >= 0.0 && frame <= 21.0) { if (frame == 0.0) frame = 3.0; angle = 90.0; if (frame > 0) { elevation = -(3.2055 - (cos((M_PI / 180) * angle) * 3.2055)); } else elevation = 0.0; if (step == 0) { hip11 = -(frame * 1.7); if (1.7 * frame > 15) heel1 = frame * 1.7; heel2 = 0; ankle1 = frame * 1.7; firstleg = frame * 0.5; secondleg = frame * 0.5; thirdleg = -frame * 0.5; fourthleg = -frame * 0.5; } else { if (1.7 * frame > 15) heel2 = frame * 1.7; heel1 = 0; ankle2 = frame * 1.7; if (frame > 0) hip11 = angle; else hip11 = 0; ankle1 = -hip11; firstleg = -frame * 0.5; secondleg = -frame * 0.5; thirdleg = frame * 0.5; fourthleg = frame * 0.5; } if (frame == 21) step++; if (frame < 21) frame = frame + 3.0; } } if (step == 1 || step == 3) { /* for(x=21.0; x>=0.0; x=x-3.0){ */ if (frame <= 21.0 && frame >= 0.0) { angle = 90.0; if (frame > 0) elevation = -(3.2055 - (cos((M_PI / 180) * angle) * 3.2055)); else elevation = 0.0; if (step == 1) { heel2 = 15; ankle1 = frame; if (frame > 0) hip21 = angle; else hip21 = 0; ankle2 = -hip21; firstleg = 0.5 * frame; secondleg = 0.5 * frame; thirdleg = -frame * 0.5; fourthleg = -frame * 0.5; } else { heel1 = 15; ankle2 = frame; if (frame > 0) hip11 = angle; else hip11 = 0; ankle1 = -hip11; firstleg = -frame * 0.5; secondleg = -frame * 0.5; thirdleg = frame * 0.5; fourthleg = frame * 0.5; } if (frame == 0.0) step++; if (frame > 0) frame = frame - 3.0; } } if (step == 4) step = 0; distance += 0.1678; glutPostRedisplay(); } void animation(void) { horse_walk(); } void Switcher(void) { if (solid_object) solid_object = 0; else solid_object = 1; } void menu_select(int mode) { switch (mode) { case 1: glutIdleFunc(animation); break; case 2: Switcher(); glutPostRedisplay(); break; case 3: exit(EXIT_SUCCESS); } } void init(void) { char i = 1; qobj = gluNewQuadric(); MaterialSet(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); glEnable(GL_DEPTH_TEST); NeckConnect(i); NeckHead(i); Shoulder(i); HorseBody(i); HorseFoot(i); HorseLowLeg(i); Connector(i); FootToes(i); Tail(i); HeadGun(i); ForeHead(i); HorseUpLeg(i); Mountain(i); } void display(void) { glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); glPushMatrix(); glRotatef((GLfloat) turn, 0.0, 1.0, 0.0); if (solid_object) { glPushMatrix(); lighting(); glPopMatrix(); } else disable(); glPushMatrix(); DrawHorse(); glPopMatrix(); glFlush(); glutSwapBuffers(); glPopMatrix(); } void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(65.0, (GLfloat) w / (GLfloat) h, 1.0, 20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 1.2, -5.5); /* viewing transform */ } /* ARGSUSED1 */ void keyboard (unsigned char key, int x, int y) { int i; switch (key) { case 'k': { GunMove(); i++; glutPostRedisplay(); } break; case 'j': { RaiseLeg1Forward(); i++; glutPostRedisplay(); } break; case 27: exit(0); break; default: break; } } void keyspecial(int key, int x, int y) { int i = 0; switch (key) { case GLUT_KEY_RIGHT:{ RightTurn(); i++; } break; case GLUT_KEY_LEFT:{ LeftTurn(); i++; } break; } if (i) glutPostRedisplay(); } void MakeMenu(void) { int glut_menu[3]; glutCreateMenu(menu_select); glutAddMenuEntry("Start Walk", 1); glutAddMenuEntry("Toggle Wireframe", 2); glutAddMenuEntry("Quit", 3); glutAttachMenu(GLUT_LEFT_BUTTON); //glutAttachMenu(GLUT_RIGHT_BUTTON); } int main(int argc, char** argv) { sin((double)iX * iY); glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); glutInitWindowSize(800, 600); glutInitWindowPosition (100, 100); glutCreateWindow ("ROBOTIC HORSE by Erwin L. De Rama"); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutSpecialFunc(keyspecial); MakeMenu(); glutMainLoop(); return 0; }
  20. Deixo aqui um pequeno vídeo do meu projeto final de licenciatura 🙂 Criei um conjunto de algoritmos e um motor 3D para gerar de forma procedimental ambientes urbanos. O motor foi feito em C e OpenGL(GL, GLU, GLUT). Parte fixe do projeto: Dá para exportar as cidades para OBJ, ou seja, é possível usar as cidades para fazer um jogo, simulador, etc. Link para o vídeo: https://www.youtube.com/embed/MhaoCKvAg4Y?feature=oembed
  21. Boa noite. 🙂 Quando comecei a programar em OpenGL, comecei tambem a utilizar a GLM (OpenGL Mathematics) para os shaders. Depressa descobri que a GLM tem a velocidade de desempenho de... uma tartaruga (pudera, com aqueles "templates" todos)! Traumatizado que fiquei, resolvi seguir a sugestão que me foi dada no blog "DaniWeb": Criar a minha própria biblioteca matemática. Embora seja uma biblioteca muito simples e incompleta, e talvez um bocado atabalhoada, no entanto não fiquei nada desapontado com o desempenho dela nas minhas aplicações, pelo contrário... até fiquei surpreendido! Modéstia à parte, a biblioteca que eu próprio escrevi, revelou-se incomparavelmente mais rápida no desempenho do que a banheira velha da GLM! No entanto, cheguei à conclusão de que não tinha feito nada de mais. Apenas tinha seguido um conselho que me tinham dado no "DaniWeb": Evitar ao máximo os "templates" nas aplicações gráficas em 3D. E de facto a minha biblioteca é completamente desprovida de "templates". Para os interessados, aqui vai o link da biblioteca "Matrix4x4" (é um nome pouco original, mas foi o que me veio à cabeça): http://rapidshare.com/share/13A4A5EF23413719673EA80EDFB69FAF Gostava que, depois de darem uma vista de olhos, me dessem sugestões: O que está mal, o que ainda falta, e como posso melhorar a minha biblioteca.
  22. 🙂 Boa noite. Aqui vai a minha primeira dúvida: Eu costumava utilizar a linguagem shader Nvídia Cg para programar com VBOs em C++/OpenGL. Mas, infelizmente, o Nvídia Cg já passou à história. O próprio site da Nvídia dedicado ao Cg toolkit ( https://developer.nvidia.com/cg-toolkit ) já deixou bem claro que não haverá mais actualizações do Cg, e recomenda a utilização do GLSL para o OpenGL, e do HLSL para o DirectX. Posto isto não tive alternativa senão começar a utilizar o GLSL. Tenho que concordar que o GLSL é de mais fácil utilização do que o Cg. Mas quando converti os exemplos de Cg para GLSL, reparei que houve uma diminuição significativa do desempenho. Por exemplo, num dado exemplo, em Cg, a velocidade de desempenho era de 120 frames por segundo. Quando passei o mesmo exemplo para GLSL, a velocidade de desempenho baixou para 82 frames por segundo! Mas não é tudo... Se eu dividir um VBO em vários sub-VBOs mais pequenos, a velocidade de desempenho aumenta em GLSL e diminui em Cg! E se eu utilizar "GL_UNSIGNED_SHORT" em vez de "GL_UNSIGNED_INT" em "glDrawElements()", a velocidade de desempenho aumenta em GLSL, enquanto que em Cg não há alterações! Pensei que isto acontecia devido a eu utilizar a versão 1.2 do GLSL (versão standard). Como tenho o OpenGL 3.3, experimentei a versão 3.3 do GLSL, mas sucedeu exactamente a mesma coisa! há um pormenor que tenho que referir: A minha GPU é uma GeForce 315M da Nvídia. E a minha versão GLSL é a 3.30 Nvídia via compilador de Cg. VIA COMPILADOR DE Cg??? Quer dizer que na minha GPU é o compilador de Cg que faz a compilação do GLSL??? Será esta a causa das discrepâncias que eu noto entre o GLSL e o Cg?? Agradecia muito que esclarecessem esta minha dúvida... 😞
  23. estou com um trabalho de openGL e devido ao facto do codeblock nao estar a executar alguns dos trabalhos eu estou a tentar descobrir como se compila e executa na consola do windows como compilar um ficheiro openGL c++ no windows? fica aqui o codigo de exemplo que estou a tentar compilar este mesmo codigo compila e executa no code:blocks mas quando preciso de compilar varios ficheiro com header o code:blocks nao responde nada logo eu penso que se conseguir compilar este na consola tambem vou conseguir compilar os restantes mesmo estando com header #include <windows.h> #include <stdlib.h> #include <stdio.h> #include <math.h> #include <GL/glut.h> //--------------------------------- Definir cores #define AZUL 0.0, 0.0, 1.0, 1.0 #define VERMELHO 1.0, 0.0, 0.0, 1.0 #define AMARELO 1.0, 1.0, 0.0, 1.0 #define VERDE 0.0, 1.0, 0.0, 1.0 #define LARANJA 1.0, 0.5, 0.1, 1.0 #define WHITE 1.0, 1.0, 1.0, 1.0 #define BLACK 0.0, 0.0, 0.0, 1.0 #define GRAY 0.9, 0.92, 0.29, 1.0 #define PI 3.14159 //================================================================================ //===========================================================Variaveis e constantes //------------------------------------------------------------ Sistema Coordenadas GLfloat xC=10.0, yC=10.0, zC=20.0; GLint wScreen=700, hScreen=600; GLfloat mesa=1.5; GLfloat bule=0.5; GLfloat quad=3.0; GLfloat mesaP[]= {3, 0, 3}; //================================================================================ //=========================================================================== INIT void init(void) { glClearColor(GRAY); glShadeModel(GL_SMOOTH); } void drawScene(){ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Mesa glPushMatrix(); glTranslatef( mesaP[0], mesaP[1]+mesa/2, mesaP[2]); glColor4f(AZUL); glutSolidCube(mesa); glColor4f(VERDE); glutWireCube(mesa); glPopMatrix(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Chaleira //*********************** IMPLEMENTAR //*********************** IMPLEMENTAR //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Quadro //*********************** IMPLEMENTAR //*********************** IMPLEMENTAR //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Eixos glColor4f(BLACK); glBegin(GL_LINES); glVertex3i( 0, 0, 0); glVertex3i(10, 0, 0); glEnd(); glBegin(GL_LINES); glVertex3i(0, 0, 0); glVertex3i(0, 10, 0); glEnd(); glBegin(GL_LINES); glVertex3i( 0, 0, 0); glVertex3i( 0, 0,10); glEnd(); } void display(void){ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[ Apagar ] glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[ Janela Visualizacao ] //-----COMANDO VIEWPORT glViewport (0,0,800,600); //*********************** IMPLEMENTAR // Opcoes //*********************** IMPLEMENTAR //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[ Projeccao] glMatrixMode(GL_PROJECTION); glLoadIdentity(); //---PROJECOES //glOrtho (-xC,xC,-yC,yC,-zC,zC); //*********************** IMPLEMENTAR gluPerspective(120, 2, 1.0, 100.0 ); // Pode tambem ser perspectiva //*********************** IMPLEMENTAR //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[ Modelo+View(camera/observador) ] glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(5,10,5, 0,0,0, 0, 1, 0); //*********************** IMPLEMENTAR // Modificar posicao do observador //*********************** IMPLEMENTAR //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[ Objectos ] drawScene(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Actualizacao glutSwapBuffers(); } //======================================================= EVENTOS void keyboard(unsigned char key, int x, int y){ switch (key) { //--------------------------- Viewport case 'a': case 'A': //*********************** IMPLEMENTAR //*********************** IMPLEMENTAR //--------------------------- Projeccao case 'q': case 'Q': //*********************** IMPLEMENTAR //*********************** IMPLEMENTAR //--------------------------- Escape case 27: exit(0); break; } } void teclasNotAscii(int key, int x, int y){ if(key == GLUT_KEY_UP) if(key == GLUT_KEY_DOWN) if(key == GLUT_KEY_LEFT) if(key == GLUT_KEY_RIGHT) //*********************** IMPLEMENTAR //*********************** IMPLEMENTAR glutPostRedisplay(); } //======================================================= MAIN int main(int argc, char** argv){ glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH ); glutInitWindowSize (wScreen, hScreen); glutInitWindowPosition (100, 100); glutCreateWindow (":::: CG 2011/12 ::::::::: (left,right,up,down, 'a', 'q') "); init(); glutSpecialFunc(teclasNotAscii); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }
  24. Quem se estiver a iniciar em OpenGL tenho uns tutoriais escritos por mim no meu site pessoal 🙂 Sugestões para novos ou melhoria dos actuais são bem vindas 😄 http://www.cdgramos.com/tutorials.html
  25. Estou com um problema na hora de compilar o meu código, ele está perfeito, foi feito em sala de aula. Recentemente, eu instalei o linux Ubuntu, sei que tenho que instala as bibliotecas do opengl, principalmente a mesa 3d, que estou com dificuldades para instala-las.... Embora tenha instalado várias bibliotecas, o mesmo erro persiste: gcc -o teste1 teste1.cpp -lGL -lglut -lglu teste1.cpp:7:21: erro fatal: gl/gl.h: Arquivo ou diretório não encontrado compilação terminada. Alguém pode me ajudar?
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.