Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

[RESOLVIDO]GMS 1.4: 3D: Como desenhar pensado no CPU?

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

[RESOLVIDO]GMS 1.4: 3D: Como desenhar pensado no CPU?

Mensagem por Cambalinho » Dom Set 03, 2017 2:44 pm

pensando no 'for' para desenhar(o chão\tecto por exemplo), como o posso fazer sem usar muito CPU?
eis o meu codigo actual:

Código: Selecionar todos

//no Draw evento:
var cutup=50; //ainda não entendi o 50.. foi ajuda noutro forum
var chunkwidth=w/cutup;
var chunkheight=h/cutup;
for (var i=0; i<cutup; i+=1)
{
    for (var j=0; j<cutup; j+=1)
    {
        if chunkheight*(j+1)>h then break;
        d3d_draw_floor(chunkwidth*i,chunkheight*j,0,chunkwidth*(i+1),chunkheight*(j+1),0, background_get_texture(bkgFloor),1,1);
    }
    if chunkwidth*(i+1)>w then break;
}
o chão é desenhado, mas usa mais CPU. como posso evitar usar muito CPU?
eu fiz este codigo para evitar 1 defeito na luz 3D. por alguma razão a luz não funciona em determinada distancia... o chão desaparece e o tecto tambem(mas as paredes não, excepto paredes mais comprimadas).
eu aceito dicas e correções do que aprendi
Editado pela última vez por Cambalinho em Ter Set 12, 2017 4:50 pm, em um total de 1 vez.

Avatar do usuário
Yakooda
Novato
Novato
Reações: 0
Mensagens: 5

Re: GMS 1.4: 3D: Como desenhar pensado no CPU?

Mensagem por Yakooda » Seg Set 11, 2017 11:38 am

É melhor vc usar tileset

Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

Re: GMS 1.4: 3D: Como desenhar pensado no CPU?

Mensagem por Cambalinho » Seg Set 11, 2017 4:57 pm

eu resolvi desta forma mais simplificada:

Código: Selecionar todos

//draw it on x,y position:
d3d_transform_set_identity();
d3d_transform_add_rotation_z(0);
d3d_transform_add_translation(x,y,0);

//divide the object size with texture size(if uses very CPU, depending on object size and texture size, multiply by 2 or 3, and see if the vrepeat\hrepeat are correct):
var stepswidth=w/background_get_width(bkgWall);
var stepsheight=h/background_get_height(bkgWall);


for (var stepx=0; stepx<stepswidth; stepx+=1)
{
    for (var stepy=0; stepy<stepsheight; stepy+=1)
    {
        //draw it 4X4 repetion:
        d3d_draw_wall(background_get_width(bkgWall)*(stepx+1),background_get_height(bkgWall)*(stepy),500,background_get_width(bkgWall)*stepx,background_get_height(bkgWall)*stepy,0, background_get_texture(bkgWall),4,4);
    }
}
d3d_transform_set_identity();
//Don't forget, when we need change the control face,
//we must change the 3 arguments with other 3,
//or it will be black and don't show the texture
leitores: nunca se esqueçam de trocar os primeiros 3 argumentos com os outros 3(falando dos seis argumentos), quando precisam de mudar a face do control. senão não é mostrada a textura mas sim 1 rectângulo preto(nunca se esqueçam desta regra)
muito obrigado a todos

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante