# OpenGL What is the better way to do to this.

## Recommended Posts

u know in video games when you go into a cutscene and you see the screen get cut, where you have two black parts on the top and in the bottom of the screen. I was wondering how they do this and one idea that comes to mind is to clear the entire backbuffer to black and draw my scene to a texture quad which i would scale and apply to the center of the screen. But the thing is that i am not sure if this is the best way to do it or they could be an easier way. By the way i am doing this in OpenGL. I try to set the glviewport and glScissor but no luck. So can someone help.

##### Share on other sites
I think scissor test would be the easy option, while changing camera to a panoramic view and resizing the viewport would look better.

There's a good tutorial on glScissor on NeHe. What problems are you experiencing?

##### Share on other sites
Couldn’t you just render a black quad over the top and bottom part of the screen?

##### Share on other sites
glScissor is what you want. Depending on how you want to cut the scene, there are some options to calculate the scissor box and maybe a new viewport aswell.

I'm assuming you simply want to add black boxes to the existing scene without changing anything else. That will preserve aspect ratio, but will hide parts of the scene, so make sure you don't have anything important near the top/bottom.

First calculate the height of a 16:9 viewport give the current window width. Change aspect ratio as you like. ww and wh means window width and window height.

nh = ww / (16/9)

Now we know that the new viewport should be nh pixels high given the current width of the viewport. So if we want the viewport centered, calculate how much to offset the viewport.

offset = (wh-nh) / 2

And set the scissor box to cut anything outside the wanted region.

glScissor(0, offset, ww, nh)
glEnable(GL_SCISSOR)

Other options are to widen the scene horizontally. That would involve changing the viewport and the projection matrix to something with a wider field of view. But I leave it up to you to figure that out yourself.

##### Share on other sites
Grain, i see what you mean and i was thinking about that, but i know that it is possible to achieve without having to render two additiona piece of geometries.
The problem that i have with glScissor is that when i set it up and clear the backbuffer it still clear the entire screen backbuffer instead of the location i specify in glScissor and glViewport.

Thank BrotherBob

## 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

• ### Forum Statistics

• Total Topics
627702
• Total Posts
2978712
• ### Similar Content

• A friend of mine and I are making a 2D game engine as a learning experience and to hopefully build upon the experience in the long run.

-What I'm using:
C++;. Since im learning this language while in college and its one of the popular language to make games with why not.     Visual Studios; Im using a windows so yea.     SDL or GLFW; was thinking about SDL since i do some research on it where it is catching my interest but i hear SDL is a huge package compared to GLFW, so i may do GLFW to start with as learning since i may get overwhelmed with SDL.
-Questions
Knowing what we want in the engine what should our main focus be in terms of learning. File managements, with headers, functions ect. How can i properly manage files with out confusing myself and my friend when sharing code. Alternative to Visual studios: My friend has a mac and cant properly use Vis studios, is there another alternative to it?

• 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.
Thank you in advance!
• 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:

• 21
• 14
• 12
• 10
• 12