Java-Gaming.org Hi !
Featured games (81)
games approved by the League of Dukes
Games in Showcase (513)
Games in Android Showcase (119)
games submitted by our members
Games in WIP (575)
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  
  LWJGL tex.getTextureData() Is this a copy?  (Read 929 times)
0 Members and 1 Guest are viewing this topic.
Offline DrewLols

Senior Duke


Medals: 3
Projects: 1


Noob going through metamorphosis...


« Posted 2013-09-04 14:11:41 »

The title should be self explanatory.  Does the method getTextureData() from the Texture class return the byte array that is stored within an OpenGL texture, or is it just a copy?  I'm alright if either are the case, but I just want to know.  If you're curious, I'm using it for my Button class.  The class ignores mouse clicks and rollovers if a pixel has an alpha of 0.

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

JGO Kernel


Medals: 109
Projects: 3


You think about my Avatar right now!


« Reply #1 - Posted 2013-09-04 14:25:50 »

I'm pretty sure that that's a copy, since OpenGL usually stores their textures on the Graphics Card's memory, so to use it in your code, it needs to be sent to your RAM.

I wouldn't implement that for your Button class Smiley You should simply expect your button to be able to be clicked in the corners, even if they are rounded off.

Also, the copying means a lot of performance decrease in your application, but only if you do that every frame (which I don't expect ^^).

In my opinion: Just don't Smiley

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline DrewLols

Senior Duke


Medals: 3
Projects: 1


Noob going through metamorphosis...


« Reply #2 - Posted 2013-09-04 14:35:07 »

I'm pretty sure that that's a copy, since OpenGL usually stores their textures on the Graphics Card's memory, so to use it in your code, it needs to be sent to your RAM.

I wouldn't implement that for your Button class Smiley You should simply expect your button to be able to be clicked in the corners, even if they are rounded off.

Also, the copying means a lot of performance decrease in your application, but only if you do that every frame (which I don't expect ^^).

In my opinion: Just don't Smiley


I could imagine that the copy would create a memory overhead.  Overall performance, though, shouldn't take much of a hit.  All I do is specify an index in the 1-dimensional byte array (treating it as a matrix, of course) based on the mouse's X and Y coordinates, and check to see if it is zero or not.  Nothing too fancy.  It actually hasn't put a hit on my performance.  I also have a method that can turn on and off this feature.  By default, it is turned off, meaning that the only memory overhead in the event that this feature is not implemented is a null pointer.

Edit:  I misinterpreted what you said.  Of course I'm not copying it every frame.  My bad.

Did you know that 90% of statistics are wrong?
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline davedes
« Reply #3 - Posted 2013-09-04 15:23:05 »

LWJGL doesn't have a Texture class.

This is part of SlickUtil; which is outdated and a little buggy.

getTextureData uses glGetTexImage, which is really slow since it requires copying data from GPU to CPU and can incur pipeline stalls.

Instead of using GL calls to acquire the pixel data it would be better to decode the PNG and save a copy of the RGBA bytes before sending them to a GL texture.

You can learn more about writing your own texture manager here:
https://github.com/mattdesl/lwjgl-basics/wiki/Textures
https://github.com/mattdesl/lwjgl-basics/wiki/Java-NIO-Buffers

Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

Longarmx (35 views)
2014-10-17 03:59:02

Norakomi (26 views)
2014-10-16 15:22:06

Norakomi (24 views)
2014-10-16 15:20:20

lcass (26 views)
2014-10-15 16:18:58

TehJavaDev (50 views)
2014-10-14 00:39:48

TehJavaDev (50 views)
2014-10-14 00:35:47

TehJavaDev (40 views)
2014-10-14 00:32:37

BurntPizza (63 views)
2014-10-11 23:24:42

BurntPizza (36 views)
2014-10-11 23:10:45

BurntPizza (75 views)
2014-10-11 22:30:10
Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06
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!