Jump to content

  • Log In with Google      Sign In   
  • Create Account


Loading different texture formats


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
7 replies to this topic

#1 Darkbouncer4689   Members   -  Reputation: 110

Like
0Likes
Like

Posted 23 July 2011 - 08:56 PM

Hey all,

I'm trying to load a .tga texture file and I'm getting an all black model. When I load other texture files such as .gif or .bmp the model is textured properly, so it's not the texture coordinates or shader.
The .tga file is also in powers of 2 (512 x 512) so that's not the problem either.

I dont really know much about the different image formats a texture can be saved as.

If anyone has any tips or pointers as to why this may be happening I would really appreciate it.

Thanks!

Sponsor:

#2 zacaj   Members   -  Reputation: 643

Like
1Likes
Like

Posted 23 July 2011 - 09:05 PM

Youll need to post your code if you want anyone to help you with it. Heres my TGA loader, for reference.

(for some reason your NOT ALLOWED TO ATTACH CODE IN A PROGRAMMING FORUM)
http://zacaj.com/targa.h
http://zacaj.com/targa.cpp

#3 Darkbouncer4689   Members   -  Reputation: 110

Like
0Likes
Like

Posted 23 July 2011 - 09:09 PM

Here is my texture loader, its in javascript/webgl

function handleLoadedTexture(textureData)
{
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.bindTexture(gl.TEXTURE_2D, textureData);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureData.image);
if(jsonTexture.minfilter == "LINEAR_MIPMAP_LINEAR")
{
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
}
else if(jsonTexture.minfilter == "NONE")
{
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
}
if(jsonTexture.magfilter == "LINEAR")
{
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
}
else if(jsonTexture.magfilter == "NONE")
{
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
}
gl.generateMipmap(gl.TEXTURE_2D);

gl.bindTexture(gl.TEXTURE_2D, null);
}
return texture;



#4 Darkbouncer4689   Members   -  Reputation: 110

Like
0Likes
Like

Posted 23 July 2011 - 09:12 PM

Also I should add that it treats all texture formats the same, it assumes RGBA, and a byte for each color. It also sets the minfilter and magfilter. The minfilter and magfilter are set by my custom collada parser. Is it necessary to have special code for some formats when using opengl?

Thanks.

#5 Darkbouncer4689   Members   -  Reputation: 110

Like
0Likes
Like

Posted 23 July 2011 - 10:27 PM

Just wanted to update that I converted the .tga texture to .png and it loads properly. I believe png is a less detailed format.

Are some formats simply not supported by opengl/webgl? The webgl spec fails to comment on what texture formats it supports.

#6 zacaj   Members   -  Reputation: 643

Like
1Likes
Like

Posted 24 July 2011 - 09:28 AM

What browser are you using? Have you tried others?

#7 phantom   Moderators   -  Reputation: 6804

Like
2Likes
Like

Posted 24 July 2011 - 10:34 AM

Just wanted to update that I converted the .tga texture to .png and it loads properly. I believe png is a less detailed format.


No, it isn't.

PNG is a lossless compressed image which uses zlib to compress the image data; TGA is also lossless but the only compression is RLE or Run Length Encoding which, depending on the image, can give worse compression ratios.

PNG also supports considerably more in the format in general.

TGA probably doesn't work as it's not a commonly used 'web format', unlike GIF, PNG, JPG and BMP formats which would all be supported by the browser natively.

#8 wolfscaptain   Members   -  Reputation: 200

Like
2Likes
Like

Posted 24 July 2011 - 02:22 PM

TGA is not supported in any browser.
Had to convert thousands of pictures to PNGs because of it :| (yey for batch operations with ImageMagick using a 5-liner Ruby script)

The browser probably told you that in its console, so you better open up the console when you test your code.
Chrome's console (and JS implementation) is a whole lot better then Firefox's in my experience, so you might want to develop on it.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS