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

This topic is 4609 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

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 on other sites
I'm just guessing but I'd say Direct Screen Access.

shmoove

Share on other sites
i personaly dont like direct screen acess at all, getting the framebuffer pointer youself is easier and more pratical imho

you can check how do that with nokia's 3d example code

here i fetched the link for you

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 on other sites
in the emulator you simply use bitmap and copy it to the screen using symbian gui stuff. that 3d example code shows that as well

Share on other sites
hm...is it possible to just grab a pointer to the screen? and plot pixels to it ala DOS mode 0x13 style?

Share on other sites
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 on other sites
Quote:
 Original post by Anonymous PosterIt'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 on other sites
Quote:
 Original post by The AlchemistI 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 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 on other sites
Quote:
 Original post by The Alchemisti 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 Alchemistas 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 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 on other sites
on emulator or in the device?

Share on other sites
on the device...

it's working now though...i just made a call to UserSvr::AddEvent() so the screen will refresh...:)

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 on other sites
use opengl es in the new phones :)

Share on other sites
unfortunately, that is not an option. :(

Share on other sites
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 ^__^

Bye,

Share on other sites
Quote:
 Original post by _nomad_unfortunately, that is not an option. :(

why not?

Share on other sites
Quote:
 Original post by GENTSHi 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 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. :)

*bump*

Share on other sites
me still don't know solution to this...:(

Share on other sites
u better ask in forum nokia or somewhere else :pp

Share on other sites
Quote:
 Original post by The Alchemistu 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??? )