Executar função de desenho em Loop no OpenGL [RESOLVIDO]

13. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Lucas
DcoderLA

(usa Debian)

Enviado em 25/04/2021 - 19:24h

Compreendi o ponto, mas ainda estou em duvida em relação ao glortho, no link que voce passou na primeira resposta é falado que o glortho2d é assim:
gluOrtho2D(left, right, top, bottom)

MAs fui procurar a documentação e nela diz que é assim:
void gluOrtho2D( GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top);

Segui a documentação, então entendi que se uso: gluOrtho2D(0, 400, 0, 400);

Estou dizendo que da esquerda pra direita vai de 0 a 400 e de baixo pra cima vai de 0 a 400. Teste com as mudanças que voce indicou, mas ainda é desenhada uma estrela.


  


14. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Lucas
DcoderLA

(usa Debian)

Enviado em 25/04/2021 - 19:26h


SamL escreveu:


aguamole escreveu:

Samuel Leonardo(SamL) cria o Super Mario para agente?
Ou o projeto esta morto para sempre?


CPU i5-8400 GTX 750 SofRaid 4xSSD 16GB DDR4 mesmo assim uso Lubuntu.

Não, ainda estou escrevendo um tutorial. Mas, acontece que nunca terminei meus clones do super mario, sempre fico entediado e acabo abandonando o projeto. Uma vez, eu retomei um desses projetos, mas acabei largando de novo rsrsrs num tem jeito.

Tem um código meu no github que é um platformer estilo super mario, ms também abandonei porque meu amigo que fazia as imagens teve problemas com depressão e daí achei melhor não ficar exigindo nada dele, mas um tempo desse ele falou sobre o projeto, pra retomarmos os trabalhos, porém, ficou só nisso mesmo.
Veja aqui o projeto:
https://github.com/cpusam/dangerous_tux">https://github.com/cpusam/dangerous_tux
As vezes eu atualizo esse projeto ai, mas não tenho planos pra voltar trabalhar nele.

____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Capeta (demo) do meu trabalho:
https://github.com/cpusam


Não sabia que você tinha tanta carga de conhecimento cara, muito obrigado pelas dicas que está me dando.


15. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Lucas
DcoderLA

(usa Debian)

Enviado em 25/04/2021 - 19:30h


SamL escreveu:

Olhai em baixo, eu dei uma ajeitada nas funções de desenho. o glFlush deve ser executado sempre por último DEPOIS de desenhar tudo na tela.
Uma coisa que lembrei foi que, é preciso usar glPushMatrix e glTranslatef antes de desenhar na tela, e depois usar glPopMatrix.
Isso acontece pelo seguinte:
No opengl, existe um estado, dai o glPushMatrix,está salvando o estado da matrix que o opengl usa pra posicionar as coisas na tela. Então, depois de salvar, você deve mover o ponto de desenho com glTranslatef, que vai mover pro ponto wCentX e wCentY e 0. Então, desse ponto ai que é o centro da estrela, é onde você deve desenhar as pontas dela ao redor desse centro aleatorio. Por isso, não se deve somar logo de cara os centros com o v[] porque só o v[] que muda os valores, já que movemos o contexto do opengl pra posição glTranslatef(wCentX,wCentY,0)
NOTA:
tambémm edite o glOrtho2D pra ficar correto, ou vai bugar tudo.

void drawStars(void) {

// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glColor3f(0.5, gerar_cores(), 1.0);

wCentX = gerar_coordenada_aleatoria();
wCentY = gerar_coordenada_aleatoria();

GLint k;
theta = (6.2831853 / 6);

for (k = 0; k < 6; k++) {
v[k].x = cos(theta * k) * wTamPad;
v[k].y = sin(theta * k) * wTamPad;
};

float d = (v[1].x - v[2].x)/2;

float dp = sqrt(pow(d,2)+pow(Wh,2));

glPushMatrix();
glTranslatef(wCentX, wCentY, 0);
glBegin(GL_POLYGON);
glVertex2f(v[0].x,v[0].y);
glVertex2f(v[1].x + dp, v[1].y);
glVertex2f(v[1].x, v[1].y);

glVertex2f(v[1].x, v[1].y);
glVertex2f(wCentX, v[1].y+Wh);
glVertex2f(v[2].x, v[2].y);

glVertex2f(v[2].x, v[2].y);
glVertex2f(v[2].x - dp, v[2].y);
glVertex2f(v[3].x, v[3].y);

glVertex2f(v[3].x, v[3].y);
glVertex2f(v[2].x - dp, v[4].y);
glVertex2f(v[4].x, v[4].y);

glVertex2f(v[5].x, v[5].y);
glVertex2f(v[5].x + dp, v[5].y);
glVertex2f(v[0].x, v[0].y);
// }
glEnd();
glPopMatrix();



// }
}

void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

for (int i = 0; i < n_stars; i++)
{
// printf( "xc = " );
// scanf( "%le", &wCentX );

// printf( "yc = " );
// scanf( "%le", &wCentY );

drawStars();
}

glFlush();
}



____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Capeta (demo) do meu trabalho:
https://github.com/cpusam


Mais uma coisa cara, eu não posso deixar de fazer o calculo usando os pontos centrais pois os vértices que formariam os triângulos dependem desse parâmetro. Se eu não usar o desenho fica distorcido.


16. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 25/04/2021 - 21:41h


DcoderLA escreveu:
Mais uma coisa cara, eu não posso deixar de fazer o calculo usando os pontos centrais pois os vértices que formariam os triângulos dependem desse parâmetro. Se eu não usar o desenho fica distorcido.

Mas isso não está correto, porque veja: se tu por exemplo, tá usando um sin/cos para posicionar os pontos. Acontece que, eles são independentes do centro.
Não sei explicar muito bem, mas eu consigo visualizar isso de boa. Imagina assim:
tu tem um gráfico cartesiano com Y indo de +1(cima) até -1(baixo) e X indo do -1 (esquerda) até +1 (direita), ou seja, a origem deste gráfico está no (0,0)
Isso é o mesmo que um círculo posicionado com centro na origem (0,0) e ele tendo raio +1 e diâmetro +2.
Acontece que, pra posicionar cada ponto na borda do círculo, tu não precisa adicionar o centro dele ao cálculo, porque qualquer que seja o centro, a figura está com origem como se fosse (0,0).

Então, tu precisa rever como está posicionando cada ponto da estrela, porque eles são independentes da origem. Por isso que, o glTranslatef é pr funcionar neste programa, porque será quase impossível posicionar de forma otimizada essas figuras na tela.

Eu sugiro que tu desenhe um cícrulo no papel e faça um gráfico cartesiano com centro no centro do circulo, ou seja, o (0,0) no meio dele.
Tu vai ver como é independente do centro que se desenha uma estrala.
Dá uma olhada nessa imagem:
https://s1.static.brasilescola.uol.com.br/be/e/Untitled-2(75).jpg
É exatamente assim que to falando

Se quiser leia esse tutorial:
https://brasilescola.uol.com.br/matematica/circunferencia-trigonometrica.htm

Pra desenhar uma estrela melhor, tu também precisará rever a forma de desenhar a estrela no drawStars.

____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Capeta (demo) do meu trabalho:
https://github.com/cpusam



17. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 25/04/2021 - 22:21h


SamL escreveu:


DcoderLA escreveu:
Mais uma coisa cara, eu não posso deixar de fazer o calculo usando os pontos centrais pois os vértices que formariam os triângulos dependem desse parâmetro. Se eu não usar o desenho fica distorcido.

Mas isso não está correto, porque veja: se tu por exemplo, tá usando um sin/cos para posicionar os pontos. Acontece que, eles são independentes do centro.
Não sei explicar muito bem, mas eu consigo visualizar isso de boa. Imagina assim:
tu tem um gráfico cartesiano com Y indo de +1(cima) até -1(baixo) e X indo do -1 (esquerda) até +1 (direita), ou seja, a origem deste gráfico está no (0,0)
Isso é o mesmo que um círculo posicionado com centro na origem (0,0) e ele tendo raio +1 e diâmetro +2.
Acontece que, pra posicionar cada ponto na borda do círculo, tu não precisa adicionar o centro dele ao cálculo, porque qualquer que seja o centro, a figura está com origem como se fosse (0,0).

Então, tu precisa rever como está posicionando cada ponto da estrela, porque eles são independentes da origem. Por isso que, o glTranslatef é pr funcionar neste programa, porque será quase impossível posicionar de forma otimizada essas figuras na tela.

Eu sugiro que tu desenhe um cícrulo no papel e faça um gráfico cartesiano com centro no centro do circulo, ou seja, o (0,0) no meio dele.
Tu vai ver como é independente do centro que se desenha uma estrala.
Dá uma olhada nessa imagem:
https://s1.static.brasilescola.uol.com.br/be/e/Untitled-2(75).jpg
É exatamente assim que to falando

Se quiser leia esse tutorial:
https://brasilescola.uol.com.br/matematica/circunferencia-trigonometrica.htm

Pra desenhar uma estrela melhor, tu também precisará rever a forma de desenhar a estrela no drawStars.

Aqui ó, fiz uma imagem pra tu ter uma noção melhor:
[ver em anexo neste post]
É uma estrela comum em muitos locais, a estrela de 5 pontas. Siga as instruções e tenha uma noção melhor de como montar o algoritmo.

____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Capeta (demo) do meu trabalho:
https://github.com/cpusam



18. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Lucas
DcoderLA

(usa Debian)

Enviado em 25/04/2021 - 22:38h


SamL escreveu:


DcoderLA escreveu:
Mais uma coisa cara, eu não posso deixar de fazer o calculo usando os pontos centrais pois os vértices que formariam os triângulos dependem desse parâmetro. Se eu não usar o desenho fica distorcido.

Mas isso não está correto, porque veja: se tu por exemplo, tá usando um sin/cos para posicionar os pontos. Acontece que, eles são independentes do centro.
Não sei explicar muito bem, mas eu consigo visualizar isso de boa. Imagina assim:
tu tem um gráfico cartesiano com Y indo de +1(cima) até -1(baixo) e X indo do -1 (esquerda) até +1 (direita), ou seja, a origem deste gráfico está no (0,0)
Isso é o mesmo que um círculo posicionado com centro na origem (0,0) e ele tendo raio +1 e diâmetro +2.
Acontece que, pra posicionar cada ponto na borda do círculo, tu não precisa adicionar o centro dele ao cálculo, porque qualquer que seja o centro, a figura está com origem como se fosse (0,0).

Então, tu precisa rever como está posicionando cada ponto da estrela, porque eles são independentes da origem. Por isso que, o glTranslatef é pr funcionar neste programa, porque será quase impossível posicionar de forma otimizada essas figuras na tela.

Eu sugiro que tu desenhe um cícrulo no papel e faça um gráfico cartesiano com centro no centro do circulo, ou seja, o (0,0) no meio dele.
Tu vai ver como é independente do centro que se desenha uma estrala.
Dá uma olhada nessa imagem:
https://s1.static.brasilescola.uol.com.br/be/e/Untitled-2(75).jpg
É exatamente assim que to falando

Se quiser leia esse tutorial:
https://brasilescola.uol.com.br/matematica/circunferencia-trigonometrica.htm

Pra desenhar uma estrela melhor, tu também precisará rever a forma de desenhar a estrela no drawStars.

____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Capeta (demo) do meu trabalho:
https://github.com/cpusam


Realmente não faz sentido, o ponto e que uso as coordenadas do centro para calcular junto com o tampad, o raio para formar o gexagono. Procurei outras formas de desenhar a estrela, mas essa é a forma que o professor pede ... Não concordo que essa forma que usei seja é a melhor mas ... né ...



19. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 25/04/2021 - 22:54h


DcoderLA escreveu:

Realmente não faz sentido, o ponto e que uso as coordenadas do centro para calcular junto com o tampad, o raio para formar o gexagono. Procurei outras formas de desenhar a estrela, mas essa é a forma que o professor pede ... Não concordo que essa forma que usei seja é a melhor mas ... né ...

Entendo, tanto é que nunca gostei de ir pra faculdade, achava muita perda de tempo, mas sugiro que tu experimente fazer de outro modo só como aprendizado, pra ficar sabendo. Porque, não há nada pior que decorar algoritmo sem saber o porquê aquilo funciona. E também, caso tu resolva de outro modo desenhar outra estrela como indiquei, sugiro não mostrar ao professor ou ele vai sentir o ego ferido por ti, vai por mim, isso acontece mesmo.


____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Capeta (demo) do meu trabalho:
https://github.com/cpusam



20. Re: Executar função de desenho em Loop no OpenGL

aguamole
aguamole

(usa KUbuntu)

Enviado em 26/04/2021 - 00:43h

DcoderLA escreveu:
Não sabia que você tinha tanta carga de conhecimento cara, muito obrigado pelas dicas que está me dando.

Um fórum é um lugar onde as pessoas se junta para dividir conhecimento, ou seja quanto mais pessoas em um fórum mais conhecimento existe.
Eu por exemplo sei programar o básico em bash.
O msoliver sabe mais que eu em bash.
Tem algumas pessoas que sabe javascript.
O SamL sabe C e C++.
E essas são as linguagem que mais vejo pergunta aqui.
O fabio sabe TCL/TK.
E vai indo.

CPU i5-8400 GTX 750 SofRaid 4xSSD 16GB DDR4 mesmo assim uso Lubuntu.


21. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Lucas
DcoderLA

(usa Debian)

Enviado em 26/04/2021 - 22:07h


SamL escreveu:


DcoderLA escreveu:

Realmente não faz sentido, o ponto e que uso as coordenadas do centro para calcular junto com o tampad, o raio para formar o gexagono. Procurei outras formas de desenhar a estrela, mas essa é a forma que o professor pede ... Não concordo que essa forma que usei seja é a melhor mas ... né ...

Entendo, tanto é que nunca gostei de ir pra faculdade, achava muita perda de tempo, mas sugiro que tu experimente fazer de outro modo só como aprendizado, pra ficar sabendo. Porque, não há nada pior que decorar algoritmo sem saber o porquê aquilo funciona. E também, caso tu resolva de outro modo desenhar outra estrela como indiquei, sugiro não mostrar ao professor ou ele vai sentir o ego ferido por ti, vai por mim, isso acontece mesmo.


____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Capeta (demo) do meu trabalho:
https://github.com/cpusam


Vou sim cara, obrigado pelas dicas, consegui resolver o problema, no caso o uso errado das funções. Agora deu certo ! Obrigado por todas as dicas.


22. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Lucas
DcoderLA

(usa Debian)

Enviado em 26/04/2021 - 22:27h


Pra falar a verdade o erro esta quando uso a seed para gerar os números aleatórios, ainda não entendi o porque...


23. Re: Executar função de desenho em Loop no OpenGL [RESOLVIDO]

Lucas
DcoderLA

(usa Debian)

Enviado em 26/04/2021 - 22:43h


DcoderLA escreveu:


Pra falar a verdade o erro esta quando uso a seed para gerar os números aleatórios, ainda não entendi o porque...


Na verdade na verdade eu descobri que esta usando a seed no lugar errado kkkkk. Noob.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts