• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Relfos

Texture matrix problems

6 posts in this topic

I have written a graphical engine that works both on desktop and mobile. And with this I've written a MMO game.

The problem is, certain graphic effects are glitched on mobile, mainly those that use texture matrix multiplications.

Here's a video of the game:

https://www.youtube.com/watch?v=ZO8_Zs5uZDg

 

Check out the video at 0:15, the snow effect is done with a tiled texture that is moved around with texture matrix translation. In Windows it displays correctly, but in mobile (as in the video), it seems that the texture is clamped.

 

What could cause this?

Edited by Relfos
0

Share this post


Link to post
Share on other sites

The clamping could be just that; clamping. Check the texture wrapping mode to ensure that it is actually wrapping the texture coordinates and not clamping them.

 

That was my thought too. Assuming your PC implementation is DirectX, it's worth knowing that texture wrapping modes are set per sampler in DirectX, so they're global, while in OpenGL the setting is applied to the texture object. Perhaps it's a bug in your abstraction layer where that difference isn't correctly reflected.

0

Share this post


Link to post
Share on other sites

As mentioned, after creating the texture you need to call:

::glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );

::glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );

 

It defaults to GL_REPEAT so you are likely accidentally calling ::glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); (etc.) somewhere while that texture is bound.

 

After creating a texture and setting all of its parameters and data, always unbind the created texture to avoid accidentally changing one of its parameters just because it was left bound after creation.

To be 100% sure, as a test you can set GL_REPEAT just after binding the texture for rendering.  If it solves the problem then you have encountered the bind-to-edit problem of OpenGL (and OpenGL ES).  That isn’t a solution, however; the solution will be one of the above (or finding the accidental setting of GL_CLAMP_TO_EDGE and eliminating it).

 

 

L. Spiro

1

Share this post


Link to post
Share on other sites

I use OpenGL for both desktop and mobile versions of the engine, so the codepath is exactly the same.

The problem is that seems that OpenGL ES 2.0 does not support wrapping in non power of 2 textures. I resized the snow texture to 256x256 and it worked.

It is a strange limitation, but oh well, now I know how to work around it

0

Share this post


Link to post
Share on other sites

I use OpenGL for both desktop and mobile versions of the engine, so the codepath is exactly the same.

The problem is that seems that OpenGL ES 2.0 does not support wrapping in non power of 2 textures. I resized the snow texture to 256x256 and it worked.

It is a strange limitation, but oh well, now I know how to work around it

 

It's not that strange a limitation; I'd be willing to bet that it doesn't support mipmaps on them either (confirmed - see the "Notes" section).  This is essentially what D3D9 called "conditional non-power-of-two" and what older versions of OpenGL exposed via the GL_ARB_texture_rectangle extension, which was limited non-power-of-two support with exactly these restrictions.

0

Share this post


Link to post
Share on other sites

Relfos, you just don’t understand the raw power…of 2.

2’s power is so great that it only takes 32 of them and you have 4,294,967,296.  Clearly 2 is a powerful number.

 

2 is clearly the God among all numbers.  The power of 2 is so great that divides and multiplies with it used to be faster (and may still be on some cards used in mobile devices) on many GPU’s.  It also has enough power to improve mipmaps.  Since each mipmap from the base up to the highest resolution doubles each time, it is by default a power-of-2 chain.  Unless you start with highest dimensions that are powers-of-2, you can’t create a mipmap chain that evenly divides in half all the way down to 1×1.

 

Low-end devices such as Android, iOS, Xbox, PlayStation 2, etc., need all the extra power they can get, and there is no greater power…than the power…

 

…of 2.

 

 

L. Spiro

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0