• ### Announcements

#### Archived

This topic is now archived and is closed to further replies.

# OpenGL I said 2D OpenGL graphics baby

## Recommended Posts

I am trying to display 2D images onto the screen (like a map with vehicles moving around on it). I would like to be able to scale these images and rotate them aswell. At the same time I would like to minimize distortion in these images. The images I am trying to display are simply a bunch of lines, polyline, polygones, etc... that are suppose to make up a wire frame display of maps and vehicles. 1. I am wondering which method of drawing/displaying these images is better (is faster an allows for scalling with the least distortion of the original image). Loading the image into a texture then binding it to a quad or drawing the images using Primatives? (The Textures would be loaded in the program as a Bitmap, and each Primatives points would be loaded into memory and then redrawn) 2. If I load the Primatives of one image into memory in my program from a file (as explained above). And I want to use this image as a background (Map). How do I display it on the screen without having to redraw the primitives everytime I want to update the map? Urg, sorry for being all over the place but I'm useless at explaining stuff only using text. Anyway, any help you can give me on my chaotic questions is much appreciated. Question at bottom of post aswell. Migs Edited by - Multiple Migs on April 26, 2001 5:36:25 PM

##### Share on other sites
It seems to me that either your use of language is flawed or you haven''t quite got your head around the basic ideas yet. (No offence intended)

Textures go onto primitives; therefore you have to have primitives to use textures. If the 2D display is gonna be a ''map'' over which vehicles will move, why would it need to be up to 40,000 vertices?

Stephen

##### Share on other sites
No offense intended, but it doesn''t make sence.
Either you''re spelling is wrong or you don''t know what the words you use excatly means...

Maybe you should try to talk about what you try to do at a higher level, like : how to do a 2D scrolling game with OpenGL.

-* So many things to do, so little time to spend. *-

##### Share on other sites
Grrrr!!!

I know that it might not seem to make any sence but it is hard to explain.

The images I am displaying are made up of lines, polylines, polygones, etc... I just happens that they contain anywhere from 300 to around 40,000 primatives (40,000 is extreme and probably will be reduced). Accuracy is important because I am trying to simulate real world coordinates on the maps.

Currently, I have a file that contains data on how to draw images with primatives (lines, arcs, polylines, etc..). The only reason i''m using this method is because I am under the impression that loading the same types of images (in Bitmap format) into a texture would not allow me to scale the image with the same accuracy as when I draw it with primatives. Capeech.

I know you need to put textures onto primatives, but what I want to know is.

1. Is there a significant difference in accuracy of the displayed image when. One it is in texture format attached to a quad, or two when the lines, polylines, etc... of the image are drawn individually?

I somewhat new to Graphics programming (OpenGL and DirectX) but I have been in programming for sometime now so I am quite sure that my understanding of the terms are correct.

##### Share on other sites
There are ways to get both methods to display accurate images. If you''re just texturing a quad (I''m assuming this will be something like a billboard), then you''d have to probably use different images for the texture when you change the size of the object. If your using a 3D model (polyline, polygons or whatever) all you do is adjust the points a little and you have a larger model. Both have advantages and disadvantages... It''s up to you which you would prefer. In terms of speed, I would say using a texture on a quad is faster (fewer polygons to draw). Ok enough BSing for me, time to go back to sleep.

##### Share on other sites
>>1. Is there a significant difference in accuracy of the displayed image when. One it is in texture format attached to a quad, or two when the lines, polylines, etc... of the image are drawn individually?<<

there shouldnt be *that* much, there will be some mind cause the lines are working from the original object theyre bound to be more acurate, also with lines you can do line antialiasing.
of note though using lines is gonna be far slower esp if youre drawing 40000 LINES just for one model, how much slower prolly in the region of seconds per frame (with antialiasing)

http://members.xoom.com/myBollux

##### Share on other sites
Thank you all for you feedback!

I was also wondering if it is possible to Draw primatives onto a Bitmap, and then save the Bitmap as a texture? If the answer is yes, a nudge in the right direction would be greatly appreciated.

I want to do this so that I only have to redraw the primatives when I scale the image.

Thanks for yo time!

Mig

##### Share on other sites
Any 3D package that can render can turn primitives into bitmaps. You can even write your own program to render primitives into bitmaps and save them as files. You can even skip the 3D packages and just draw the bitmaps in some 2D software.
Whenever you''re displaying something on the screen it''s basically an image that you''ve put together. It shouldn''t be that much more work to just save that as a file.

##### Share on other sites

Dumb question coming up. But that just means it should be easy to answer. heh heh heh.

Is there are min/max/optimum size for textures? Can they only be glued to a certain size primative?

Thanks for all the help.

Mig

##### Share on other sites
quote:
Original post by Multiple Migs

Is there are min/max/optimum size for textures?

The minimum size is 2 by 2 (I think, it could be 1 by 1) pixels. The maximum size is determined by your video card. For example: Most Voodoo''s can only handle 256 by 256 and down, while all nVidia cards newer than the TNT can handle up to 4096 by 4096.

quote:
Original post by Multiple Migs

Can they only be glued to a certain size primative?

Nope. But if you don''t want the texture to be filtered, then the primitive it is used on should be the same size as the texture (that''s a basic description, but you get the idea).

http://druidgames.cjb.net/

##### Share on other sites
How do you transfer an image from the framebuffer (currently displayed image) into a texture?

Is it possible to draw primatives (using glBegin(...)) straight into a texture?

Thanks for responding to all my questions!

Migs

##### Share on other sites
Render to the backbuffer, and use glReadPixels to dump the screen into a buffer, which may just happen to become a texture . That''s the only way I''ve seen it done, although the ARB is considering adding rendering straight to a texture in a future version of OpenGL (I read that in their meeting notes, so it isn''t certain to happen soon or at all).

http://druidgames.cjb.net/

##### Share on other sites
Note on above post by Null & Void:
I''m not saying I know of another way, but -
That will be slow.

-Mezz

##### Share on other sites
the fastest way to copy a piece of the screen into a texture is
glCopyTexSubImage(..)

a sidenote.
http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/002552.html

http://members.xoom.com/myBollux

##### Share on other sites
Hey everyone,

Thanks for all the replies! Now i''ve got another question. I am trying to draw an image into the auxillary buffer so that I do not have to redraw it everytime it is displayed to the screen. The documentation in the RedBook says this should work. But, it doesn''t seem to be working.

Here is the portion of code i''m having troubles with:

void __fastcall TFormMain::DrawObjects()
{
// the portion in this if is only done once
if(init)
{
glDrawBuffer(GL_AUX1);
glTranslatef(320, 240, 0);
glTranslatef(-320, -240, 0);
DrawCsmMap("vms2d.csm", 0); // a draw function of my own
init = false;
}
glDrawBuffer(GL_BACK);
glCopyPixels(0, 0, 640, 480, GL_COLOR);
}

I know i''m a rookie and this code my be funny to some of you. But if anybody could send me in the right direction, I would greatly appreciate it.

P.S. I''m almost over the hump so I won''t have to ask too many more questions.

Mig

##### Share on other sites
have a look at the IIRC win_buffer_region extension demo my site. this is prolly more suitable for this

http://members.xoom.com/myBollux

• ## Partner Spotlight

• ### Forum Statistics

• Total Topics
627657
• Total Posts
2978471
• ### Similar Content

• Both functions are available since 3.0, and I'm currently using glMapBuffer(), which works fine.
But, I was wondering if anyone has experienced advantage in using glMapBufferRange(), which allows to specify the range of the mapped buffer. Could this be only a safety measure or does it improve performance?
Note: I'm not asking about glBufferSubData()/glBufferData. Those two are irrelevant in this case.
• By xhcao
Before using void glBindImageTexture(    GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format), does need to make sure that texture is completeness.
• By cebugdev
hi guys,
are there any books, link online or any other resources that discusses on how to build special effects such as magic, lightning, etc. in OpenGL? i mean, yeah most of them are using particles but im looking for resources specifically on how to manipulate the particles to look like an effect that can be use for games,. i did fire particle before, and I want to learn how to do the other 'magic' as well.
Like are there one book or link(cant find in google) that atleast featured how to make different particle effects in OpenGL (or DirectX)? If there is no one stop shop for it, maybe ill just look for some tips on how to make a particle engine that is flexible enough to enable me to design different effects/magic
let me know if you guys have recommendations.
• By dud3
How do we rotate the camera around x axis 360 degrees, without having the strange effect as in my video below?
Mine behaves exactly the same way spherical coordinates would, I'm using euler angles.
Tried googling, but couldn't find a proper answer, guessing I don't know what exactly to google for, googled 'rotate 360 around x axis', got no proper answers.

References:
Code: https://pastebin.com/Hcshj3FQ
The video shows the difference between blender and my rotation:

• By Defend
I've had a Google around for this but haven't yet found some solid advice. There is a lot of "it depends", but I'm not sure on what.
My question is what's a good rule of thumb to follow when it comes to creating/using VBOs & VAOs? As in, when should I use multiple or when should I not? My understanding so far is that if I need a new VBO, then I need a new VAO. So when it comes to rendering multiple objects I can either:
* make lots of VAO/VBO pairs and flip through them to render different objects, or
* make one big VBO and jump around its memory to render different objects.
I also understand that if I need to render objects with different vertex attributes, then a new VAO is necessary in this case.
If that "it depends" really is quite variable, what's best for a beginner with OpenGL, assuming that better approaches can be learnt later with better understanding?

• 10
• 12
• 22
• 13
• 33