Sign in to follow this  
_nomad_

[symbian] fast graphics? how do they do it?

Recommended Posts

hello, any ideas how the guys like http://pockethal.droneship.com/features.html and http://www.gapidraw.com/ can churn out fast graphical output (even faster than possible with symbian SDK?) in symbian? thanks.

Share this post


Link to post
Share on other sites
But I found this frame buffer pointer is NULL in emulator.
And it seems in emulator the RWsSession::Connect() return error too...
I am doing all these in "exe" mode. Are there any way to make these
work on emulator?

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Quote:
Original post by _nomad_
hm...is it possible to just grab a pointer to the screen? and plot pixels to it ala DOS mode 0x13 style?


It's possible, but I woudn't recommend it. You will have problem with focus switch. More easy to get the pointer to offscreen bitmap and after that use Direct screen access to blit it to screen. That also solve tearing problem.

Share this post


Link to post
Share on other sites
Quote:
Original post by Anonymous Poster

It's possible, but I woudn't recommend it. You will have problem with focus switch. More easy to get the pointer to offscreen bitmap and after that use Direct screen access to blit it to screen. That also solve tearing problem.


hmm... seriously i find using DSA harder using TScreenInfoV01 is so much easier, and i havent found focus switch problems, but how the heck it solves tearing?

Share this post


Link to post
Share on other sites
Quote:
Original post by The Alchemist
I but how the heck it solves tearing?


Double buffering solve tearing. Well, I may be off here - I've never encountered tearing, I'm always using double buffering.

Focus problem happens if someone calling you whyle your are playing. If you aren't handling it correctly you will not see phone handle icon on your screen.

Share this post


Link to post
Share on other sites
uh maybe was my bad writting, but i think you missed the point

i know what focus change is, im just saying that theres no problems with focus change since you can catch focus change even without dsa

except that i think that dsa is too messy, truth is, i dont even remenber why i remenber trying dsa few months ago and hating it, specialy after i saw how simply getting the screen buffer was :P

as far i know, tearing in s60 is unavoidable since theres no vsync at all(wtf they were thinking?), and obviusly you need to backbuffer, even if you had vsync rendering to frame buffer would just be stupid

Share this post


Link to post
Share on other sites
Quote:
Original post by The Alchemist
i know what focus change is, im just saying that theres no problems with focus change since you can catch focus change even without dsa

Yep, but I'm lazy. With DSA I get it for free (that is a part of the DSA class)

Quote:
Original post by The Alchemist
as far i know, tearing in s60 is unavoidable since theres no vsync at all(wtf they were thinking?), and obviusly you need to backbuffer, even if you had vsync rendering to frame buffer would just be stupid

Uhmm, I never had a tearing with double buffering.... Can you explain how you got a tearing ? May be you are rendering very fast - 60+frames/sec ? With around 30 fps I've never got anything that resemble tearing. I'm running at around 10 fps on the 6600 so I'll not see it just now, but then I'll start to port to 8a ...

Share this post


Link to post
Share on other sites
alright i tried both TScreenInfoV01 screen pointer method and the CFbsScreenDevice/CFbsBitGc (found on: http://www.symbian.com/developer/techlib/papers/dsa/direct_screen_access.pdf)

however, nothing is showing up. i know it's drawing because when i select the left softkey and a menu shows up, the background change to a different color (my code should keep on clearing the screen to different colors, you see).

other than that, the screen is not being cleared to a different color.

anyone got sample project files/codes that i could use?

thanks.

Share this post


Link to post
Share on other sites
any tips on how to blit an image fast to the screen?

the one i'm doing now is just a memcpy...where i make a for-loop of the height of the image, and memcpy line per line from the source cfbsbitmap...

is there a faster way you guys can think of to blit a cfbsbitmap through direct screen pointer?

also, on some new phones like the nokia 6680, i am having problems displaying pixels. It is because these phones aren't the usual 16bit (5:6:5 RGB) pixels like the nokia 6630. The nokia 6680 (and their later phones) have screen depth of 18bits...and when i run my app on these phones, the result is garbage on screen. the same happens on the "Symbian OS 3D Game Engine Example 1.0" app given by Alchemist above. any ideas how to draw on these mode through direct screen? i'm guessing the pixel would be 6:6:6, but don't know how to do it since i dunno how to declare an 18bit variable (and i don't know if it IS 18bit per pixel when setting a pixel value in these screens).

thanks.

Share this post


Link to post
Share on other sites
Hi nomad...
I'm developing a 3D game engine on the Symbian example and I'thinks that you've to take a look to the DrawTexTri() function in the CPolygonObject.cpp file...
You should find something like that:


while( p <= p2 )
{
*p++ = sp[ ( tx >> 8 ) + ( ty & 0xff00 ) ]; ***********
tx += txa;
ty += tya;
}


If you add some Hex color on the ******** line (simply adding) all image colour changes. So if you need a simple image copying take a look to this piece of code... I'm also waiting your tutorial on cel-shading... I hope you'll finish it as soon as possible ^__^

I hope that could help you...

Bye,

Share this post


Link to post
Share on other sites
Quote:
Original post by GENTS
Hi nomad...
I'm developing a 3D game engine on the Symbian example and I'thinks that you've to take a look to the DrawTexTri() function in the CPolygonObject.cpp file...
You should find something like that:


while( p <= p2 )
{
*p++ = sp[ ( tx >> 8 ) + ( ty & 0xff00 ) ]; ***********
tx += txa;
ty += tya;
}


If you add some Hex color on the ******** line (simply adding) all image colour changes. So if you need a simple image copying take a look to this piece of code... I'm also waiting your tutorial on cel-shading... I hope you'll finish it as soon as possible ^__^

I hope that could help you...

Bye,



Hi there. Hmm...I'll look into that part. thanks for pointing it out (and for vising my site). :)

Share this post


Link to post
Share on other sites
Quote:
Original post by The Alchemist
Quote:
Original post by _nomad_
unfortunately, that is not an option. :(


why not?


well, while it'll probably a whole lot faster (in rendering) when i use opengl ES, i really don't need all that added 3D speed. i'm only doing my own GUI library. :)

using ES for specific phones would make the code double its size (one path for 16bit screen w/out ES support, and the other for phones w/ES support) and make me create different .sis files for different phones...

if i can find out how to plot a pixel in 18bit screen, then i could just check the screen depth of the phone and choose which pixel plotter to use. :)

Share this post


Link to post
Share on other sites
Quote:
Original post by The Alchemist
u better ask in forum nokia or somewhere else :pp


i already did....weeks ago....no one knows also....even nokia experts aren't replying (considering it's nokia's website/forum, it is odd nobody knows??? )

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