Java-Gaming.org Hi !
Featured games (90)
games approved by the League of Dukes
Games in Showcase (741)
Games in Android Showcase (225)
games submitted by our members
Games in WIP (823)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  SpriteBatch setProjectionMatrix woes...  (Read 1108 times)
0 Members and 1 Guest are viewing this topic.
Offline DrewLols

Senior Devvie


Medals: 4
Projects: 1


Noob going through metamorphosis...


« Posted 2014-08-06 02:46:03 »

I want to render an image at coordinates 100, 50, 0.  Consider the following code...

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
package com.mygdx.game;
import com.badlogic.gdx.ApplicationAdapter;

import scenegraph.*;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Matrix4;


/**
 * Object representing the core of the game.  Which platform it compiles for
 * varies
 * @author William Andrew Cahill
 */

public class GameLauncher extends ApplicationAdapter
{
   // Rendering variables
   private SpriteBatch batch;         // Object that renders all the sprites
   
   // Region to draw
   TextureRegion region;
   
   
   @Override
   public void create()
   {
      // Initializes batch
      batch = new SpriteBatch();
     
      // Stores first image
      region = new TextureRegion(new Texture(Gdx.files.internal("res/entities/wiggles/wigglesIdle.png")));
   }

   
   @Override
   public void render()
   {
      // Clears the screen
      Gdx.gl.glClearColor(1, 0, 0, 1);
      Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
     
      // Begins drawing
      batch.begin();
     
      // Gets matrix and copy
      Matrix4 m = batch.getProjectionMatrix();
      Matrix4 c = m.cpy();
     
      // Draws
      m.translate(100, 50, 0);
      batch.draw(region,0,0);
     
      // Restores matrix
      batch.setProjectionMatrix(c);
     
      // Ends drawing
      batch.end();
   }
}


No matter what transformations I make, it stays in the same place.  I know that there is a draw method in SpriteBatch that lets me specify where to draw it, but I am trying to set up a scene-graph, and that requires me to translate, rotate, etc using SpriteBatch's Matrix4 extracted from batch.getProjectionMatrix().  I can make it look like the image slides across the screen if I remove the line that restores the matrix to it's original form, but I can't make it shift and stay there.  Is my understanding of the projection matrix incorrect?  I always have this problem with LibGDX, but I can never remember how to solve it.  The docs don't really explain its behavior.

Did you know that 90% of statistics are wrong?
Offline DrewLols

Senior Devvie


Medals: 4
Projects: 1


Noob going through metamorphosis...


« Reply #1 - Posted 2014-08-06 02:51:36 »

Aaaaand I solve my own problem only after I post something and make myself look like an idiot xD.  I should have extracted the matrix and transformed it BEFORE calling begin/end.  Like this:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
package com.mygdx.game;
import com.badlogic.gdx.ApplicationAdapter;

import scenegraph.*;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Matrix4;


/**
 * Object representing the core of the game.  Which platform it compiles for
 * varies
 * @author William Andrew Cahill
 */

public class GameLauncher extends ApplicationAdapter
{
   // Rendering variables
   private SpriteBatch batch;         // Object that renders all the sprites
   
   // Region to draw
   TextureRegion region;
   
   
   @Override
   public void create()
   {
      // Initializes batch
      batch = new SpriteBatch();
     
      // Stores first image
      region = new TextureRegion(new Texture(Gdx.files.internal("res/entities/wiggles/wigglesIdle.png")));
   }

   
   @Override
   public void render()
   {
      // Clears the screen
      Gdx.gl.glClearColor(1, 0, 0, 1);
      Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
     
      // Begins drawing
      // Gets matrix and copy
      Matrix4 m = batch.getProjectionMatrix();
      Matrix4 c = m.cpy();
     
      // Draws
      m.translate(100, 1, 0);
      batch.begin();
     
      batch.draw(region,0,0);
     
      // Restores matrix
      batch.setProjectionMatrix(c);
     
      // Ends drawing
      batch.end();
   }
}


As you were...

Did you know that 90% of statistics are wrong?
Pages: [1]
  ignore  |  Print  
 
 

 
xxMrPHDxx (18 views)
2017-11-21 16:21:00

xxMrPHDxx (11 views)
2017-11-21 16:14:31

xxMrPHDxx (14 views)
2017-11-21 16:10:57

Ecumene (114 views)
2017-09-30 02:57:34

theagentd (148 views)
2017-09-26 18:23:31

cybrmynd (248 views)
2017-08-02 12:28:51

cybrmynd (248 views)
2017-08-02 12:19:43

cybrmynd (244 views)
2017-08-02 12:18:09

Sralse (258 views)
2017-07-25 17:13:48

Archive (878 views)
2017-04-27 17:45:51
List of Learning Resources
by elect
2017-03-13 14:05:44

List of Learning Resources
by elect
2017-03-13 14:04:45

SF/X Libraries
by philfrei
2017-03-02 08:45:19

SF/X Libraries
by philfrei
2017-03-02 08:44:05

SF/X Libraries
by SkyAphid
2017-03-02 06:38:56

SF/X Libraries
by SkyAphid
2017-03-02 06:38:32

SF/X Libraries
by SkyAphid
2017-03-02 06:38:05

SF/X Libraries
by SkyAphid
2017-03-02 06:37:51
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!