Класс буфера рендера
This commit is contained in:
		
							parent
							
								
									e0404750f1
								
							
						
					
					
						commit
						153c905ba5
					
				| @ -73,4 +73,16 @@ class FBO | |||||||
|         GLuint handler; // Дескриптор
 |         GLuint handler; // Дескриптор
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | // Объект буфера рендера
 | ||||||
|  | class RBO | ||||||
|  | { | ||||||
|  |     public: | ||||||
|  |         RBO(int w, int h, GLuint component = GL_DEPTH_COMPONENT); // Создает буфер рендера с заданными параметрами размеров и используемых компонент
 | ||||||
|  |         ~RBO(); // Уничтожение буфера
 | ||||||
|  | 
 | ||||||
|  |         GLuint getHandler(); // Возвращает дескриптор буфера рендера
 | ||||||
|  |     protected: | ||||||
|  |         GLuint handler; // Дескриптор
 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| #endif // BUFFERS_H
 | #endif // BUFFERS_H
 | ||||||
|  | |||||||
| @ -174,3 +174,23 @@ void FBO::assignRenderBuffer(GLuint hander, GLuint attachment) | |||||||
| { | { | ||||||
|     glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, hander); |     glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, hander); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // Создает буфер рендера с заданными параметрами размеров и используемых компонент
 | ||||||
|  | RBO::RBO(int w, int h, GLuint component) | ||||||
|  | { | ||||||
|  |     glGenRenderbuffers(1, &handler); | ||||||
|  |     glBindRenderbuffer(GL_RENDERBUFFER, handler); | ||||||
|  |     glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, w, h); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Уничтожение буфера
 | ||||||
|  | RBO::~RBO() | ||||||
|  | { | ||||||
|  |     glDeleteRenderbuffers(1, &handler); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Возвращает дескриптор буфера рендера
 | ||||||
|  | GLuint RBO::getHandler() | ||||||
|  | { | ||||||
|  |     return handler; | ||||||
|  | } | ||||||
|  | |||||||
| @ -125,11 +125,8 @@ int main(void) | |||||||
|     Texture colors(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0); |     Texture colors(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0); | ||||||
|     Texture normals(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT1, 0, GL_RGBA16F);  |     Texture normals(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT1, 0, GL_RGBA16F);  | ||||||
|     // Создадим буфер рендера под буфер глубины и привяжем его
 |     // Создадим буфер рендера под буфер глубины и привяжем его
 | ||||||
|     unsigned int rbo; |     RBO rbo(WINDOW_WIDTH, WINDOW_HEIGHT); | ||||||
|     glGenRenderbuffers(1, &rbo); |     fbo.assignRenderBuffer(rbo.getHandler()); | ||||||
|     glBindRenderbuffer(GL_RENDERBUFFER, rbo); |  | ||||||
|     glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, WINDOW_WIDTH, WINDOW_HEIGHT); |  | ||||||
|     fbo.assignRenderBuffer(rbo); |  | ||||||
|     // Активируем базовый буфер кадра
 |     // Активируем базовый буфер кадра
 | ||||||
|     FBO::useDefault(); |     FBO::useDefault(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user