UniDev - Programação de Jogos • View topic - Imagens grandes não carregam?


[ +/- ] [ Hoje é 06 Set 2010, 23:39 ]


Post a new topicWrite comments Page 1 of 1   [ 8 posts ]
Author Message
 Post subject: Imagens grandes não carregam?
PostPosted: 10 Jun 2010, 15:10 
Membro

Joined: 29 Nov 2009, 20:08
Posts: 28
tenho backgrounds em png de até 4096x1024, mas não tá desenhando ou pior que isso, não tá carregando...

Se for o caso eu diminuo elas num editor...

Outra pergunta. tenho a tela de 1024x768, como desenhar uma imagem de 1024x512 de forma que ela preencha toda a tela?

não entendi o drawshaped aqueles dwColor1 2 3 4...

DrawSprite com set rect antes tá esticando a imagem de forma não uniforme.

Resta o scale, mas que valor colocar pra aumentar de forma precisa de 512 para 768? Ou melhor ainda, como aumentar de forma precisa de N para 768?

To planejando em fazer um típico side scrolling platform game e resolvi usar GameSpaceLib por ser muito bacana!


Topo
 Profile  
 
 Post subject: Re: Imagens grandes não carregam?
PostPosted: 10 Jun 2010, 15:53 
Membro Avançado

Joined: 02 Mar 2005, 17:39
Posts: 1830
Location: Brasil
Nossa, 4096x1024 é grande pra car*lho hein! tem certeza que precisa disso tudo? Se o cenário precisa ser maior que a tela (pra um Metal Slug, por exemplo), tente dividí-lo em várias imagens menores até conseguir um tamanho que a engine carregue. Aí também facilita pra CPU\GPU pois você pode renderizar apenas as "telas" possivelmente visíveis ao jogador ao invés de "BLAM!", uma imagem gigantona de uma vez.

Cria uma versão ideal pra maior resolução que seu jogo pode reproduzir, e vai diminuindo ela (pode ser por código mesmo) pras outras resoluções menores.

Não sei C++ nem mexo com a GameSpaceLib, mas na lógica: você tem que escalar essa imagem num fator de (768 / 512).
Vai dar um valor flutuante maior que 1.0, e logo, vai aumentar a imagem para caber na resolução.

Também pode usar essa semântica:

(Valor_Que_Quero_Atingir / Valor_Original_Impróprio)

Multiplicando o Valor_Original_Impróprio pelo resultado disso acima, você o transformará no que Quero_Atingir.


Topo
 Profile  
 
 Post subject: Re: Imagens grandes não carregam?
PostPosted: 10 Jun 2010, 16:19 
Membro

Joined: 29 Nov 2009, 20:08
Posts: 28
é, escalando do jeito que tu falou eu consegui. agora sobre o tamanho da imagem aí já é um problema, tá realmente grande.

O jogo que quero fazer é do tipo side scrolling, mas não pretendia (ou não pretendo) usar tiles, queria usar apenas imagens na tela em posições específicas no mundo, caso o scrolling alcance a imagem eu desenho ela... tipo uma camera.

Se eu fizer tiles gastará muito menos memória né? Como você faria?

Escalar a imagem para o tamanho da tela evita cpu mas a memória gasta pela imagem é a mesma né?


Topo
 Profile  
 
 Post subject: Re: Imagens grandes não carregam?
PostPosted: 10 Jun 2010, 17:33 
Administrador
User avatar

Joined: 30 Ago 2002, 19:16
Posts: 437
Location: Brasil
Isso aí é muito grande mesmo. Quem determina este limite é placa de vídeo, já que cada sprite é uma textura. Se você REALMENTE precisa de um bitmap tão grande, tente dividi-lo em várias imagens pequenas, como 512x512. Até porque você com certeza irá querer implementar algum tipo de culling para não ter de desenhar a cena inteiríssima a cada frame, porque isso gera um overhead enorme.
Mas memso assim, reconsidere essa necessidade. Se possível, utilize tile maps.

Para esticar uma imagem no tamanho da tela você pode utilizar o DrawShapedSprite diretamente. Os dwColor0/1/2/3 são as cores dos quatro cantos (vértices) do sprite:
Code:
sprite.DrawShapedSprite(GS_VECTOR2(0,0), GS_VECTOR2(1024, 768), GS_WHITE, GS_WHITE, GS_WHITE, GS_WHITE, 0.0f);


Quote:
Se eu fizer tiles gastará muito menos memória né? Como você faria?

Absolutamente sim. Tilemaps foram feitos para suprir essa necessidade mesmo.

Quote:
Escalar a imagem para o tamanho da tela evita cpu mas a memória gasta pela imagem é a mesma né?

O uso da memória é o mesmo independentemente do tamanho que você está desenhando seus sprites. E a diferença de uso do CPU é nula/insignificante.

Espero ter ajudado, qualquer dúvida é só perguntar.

_________________
André Santee
ImageEthanon Engine: http://www.asantee.net/ethanon/
ImageGameSpaceLib: http://www.asantee.net/gamespace/
Página pessoal: http://www.asantee.net/


Topo
 Profile  
 
 Post subject: Re: Imagens grandes não carregam?
PostPosted: 10 Jun 2010, 19:31 
Membro

Joined: 29 Nov 2009, 20:08
Posts: 28
Ok, digamos que eu faça usando tile map, como vou dividir a imagem em tiles? Pensei em duas alternativas.

Abrir ela no fireworks e dividir em blocos e no olhômetro mesmo verificar quais são iguais e salvar com o id correto.

Abrir ela em um programa feito por mim que salva os pedaços no tamanho certo, dá até pra fazer com a GameSpace.

A primeira alternativa é totalmente inviável oO.
A segunda alternativa funcionaria, mas não sei direito como fazer. Teria que checar a nível de pixel as cores pra determinar se o tile já existe...

Então fica a pergunta, como gero os tiles dos backgrounds que tenho aqui, são vários...


Topo
 Profile  
 
 Post subject: Re: Imagens grandes não carregam?
PostPosted: 10 Jun 2010, 19:40 
Administrador
User avatar

Joined: 30 Ago 2002, 19:16
Posts: 437
Location: Brasil
Eu faria o seguinte, utilizaria o Paint Shop Pro e usaria a ferramenta de Resize canvas, onde é possível especificar certinho (numericamente) onde quero recortar, e então ir recortando em tiles de 512x1024. Assim você só precisaria recorta-lo 8 vezes na horizontal. Deve existir algum programa que faça isso, mas não conheço. O Gimp por exemplo, deve ter algo nativo ou pelo menos um plugin. Talvez alguma dessas ferramentas para criação para web também tenham ferramentas do tipo que facilitam.
O negócio é que isso não é nem uma limitação da GameSpaceLib, mas das placas de vídeo. Não são todas que suportam texturas desse tamanhão.

_________________
André Santee
ImageEthanon Engine: http://www.asantee.net/ethanon/
ImageGameSpaceLib: http://www.asantee.net/gamespace/
Página pessoal: http://www.asantee.net/


Topo
 Profile  
 
 Post subject: Re: Imagens grandes não carregam?
PostPosted: 10 Jun 2010, 19:58 
Membro

Joined: 29 Nov 2009, 20:08
Posts: 28
É, vou fazer isso! Diminuir a imagem num programa de edição de imagem, e recortar pedaços de 512x512 e depois montrar o fundo na hora de desenhar... valeu andrew1b!

Aproveitando que você é o desenvolvedor da gamespace, quero parabenizá-lo pelo trabalho, tá muito mais elegante que muitas libs por aí (sem citar nomes =P)!


Topo
 Profile  
 
 Post subject: Re: Imagens grandes não carregam?
PostPosted: 11 Jun 2010, 20:38 
Administrador
User avatar

Joined: 30 Ago 2002, 19:16
Posts: 437
Location: Brasil
Obrigado pelo apoio. A intenção jamais é competir com outras libs grandes como SDL, mas espero que seus diferenciais sirvam para os propósitos de várias pessoas.

_________________
André Santee
ImageEthanon Engine: http://www.asantee.net/ethanon/
ImageGameSpaceLib: http://www.asantee.net/gamespace/
Página pessoal: http://www.asantee.net/


Topo
 Profile  
 
Display posts from previous:  Sort by  
Post a new topicWrite comments Page 1 of 1   [ 8 posts ]
Similar topics
Trocar imagens de uma variavel...
Forum: Allegro
Author: gamemasterbr
Replies: 11
Como inserir imagens no Allegro
Forum: Allegro
Author: goiaba3d
Replies: 6
Imagens em C
Forum: C/C++
Author: Thyago Maciel
Replies: 1
Imagens para skycube
Forum: 3D Game Studio
Author: wilquimico22
Replies: 2
sites com imagens para modelar
Forum: Modelagem 3D
Author: DraguN
Replies: 1
Topo


Who is online

Users browsing this forum: Nenhum usuario registrado and 1 guest


Voce não pode criar topicos neste forum
Voce não pode responder topicos neste forum
Voce nao pode editar seu post neste forum
Voce nao pode deletar seu post neste forum

Search for:
Jump to:  



Powered by phpBB ©

Virtual Object Informática Ltda. Fone/Fax: (15)3231-6840

Portal XL 5.0 ~ Premod 0.2 phpBB SEO