30/09/2018, 20:42

Nhờ anh chị xem giúp code OpenGL

Em mới học OpenGL, em làm theo y chang tut trên Youtube nhưng vẫn không được :’(

#include "window.h"
#include <iostream>
using namespace std;
namespace hoangtrung1999 {
	namespace graphics{
		Window::Window(const char *name , int width , int height)
		{
			m_Name = name;
			m_Width = width;
			m_Height = height;
			if(!init())
			{
				glfwTerminate();
			}
		}
		Window::~Window()
		{
			glfwTerminate();
		}
		bool Window::init()
		{
			if(!glfwInit())
		{
			cout<<"Fail to initialize GLFW!
";
			return false;
		}
			m_window = glfwCreateWindow (m_Width , m_Height, m_Name , NULL , NULL);
			if(!m_window)
			{
				cout<<"Fail create window";
				return false;
			}
			glfwMakeContextCurrent(m_window);
			return true;
		}
		bool Window::closed() const
		{
			return glfwWindowShouldClose(m_window);
		}
		void Window::Update() const
		{
			glfwSwapBuffers(m_window);
			glfwPollEvents();
		}
	}
}`

#include <Windows.h>
#include <GLglew.h>
#include <GLfreeglut.h>
#include <iostream>
#include <GLFWglfw3.h>
#include "srcgraphicswindow.h"
using namespace std;

int main ()
{
	using namespace hoangtrung1999;
	using namespace graphics;
	Window window ("hoangtrung1999" , 800 , 600);
	while (!window.closed())
	{
		window.Update();
	}
	return 0;
}`

`#pragma once
#include <GLFWglfw3.h>
namespace hoangtrung1999 {
	namespace graphics{
	class Window
	{
	private:
		const char *m_Name;
		int m_Width, m_Height;
		GLFWwindow *m_window;
		bool m_Close;
	public:
		Window (const char *name , int width , int height);
		~Window ();
		bool closed() const;
		void Update() const;
	private:
		bool init();
	};
	
	}
}`

@nguyenchiemminhvu , @Giay_Nhap
Khi chạy nó chỉ hiện “Fail to create window” chứ không báo lỗi @@

... viết 22:51 ngày 30/09/2018

Mình thấy code bình thường.

http://www.glfw.org/docs/3.0/group__error.html

Bạn thử dùng error callback để coi nó báo lỗi gì.

Link bạn học là gì?

Cũng có thể bạn cần configure một số thứ liên quan tới Window trước khi tạo Window.

glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
Nguyễn Hoàng Trung viết 22:55 ngày 30/09/2018

Link này ạ: https://www.youtube.com/watch?v=Pid8JGlBdPY&list=PLlrATfBNZ98fqE45g3jZA_hLGUrD4bo6_&index=5

Nguyễn Hoàng Trung viết 22:58 ngày 30/09/2018

à cái này dùng như thế nào anh @@ em còn mù mờ quá , với glew , glut , glfw nó khác nhau ở đâu anh? Sao mà mỗi tut trên youtube nó xài 1 cái riêng nhức đầu quá @@

... viết 22:55 ngày 30/09/2018

The first argument of glfwWindowHint tells us what option we want to configure, where we can select the option from a large enum of possible options prefixed with GLFW_. The second argument is an integer that sets the value of our option.

Mấy cái này chỉ là cấu hình cho glfw window trước khi tạo thôi.

Framework glfw nó chỉ bao gồm chừng này thôi: http://www.glfw.org/docs/latest/index.html

Nguyễn Hoàng Trung viết 22:42 ngày 30/09/2018

Mà học OpenGL nên dùng glew , glut hay glfw anh ? 3 cái đó nó khác như thế nào?

... viết 22:56 ngày 30/09/2018

GLFW là framework thay thế cho framework OpenGL 2.0 cũ với một số API và cách tổ chức code trên mô hình mới hơn.

GLFW chỉ giúp bạn:

  • Tạo mới và làm việc với cửa sổ đồ họa, framebuffers.
  • Làm việc với OpenGL context.
  • Làm việc với nhiều monitor.
  • Có cách xử lý input và error khác với OpenGL 2.0

Còn nếu bạn muốn làm việc nhiều hơn với phần đồ họa bên trong đối tượng GLFWwindow mà bạn đã tạo thì cần dùng thêm thư viện GLEW, nó là một tập hợp các API dùng trong đồ họa. GLUT cũng là một thư viện giúp làm việc với window và một số API đồ họa, nhưng GLEW nó chứa luôn là GLUT trong đó rồi.

Dưới đây là một vài API trong số hơn 3.500 API mà GLEW hổ trợ:

---------------------------
    GLEW Extension Info
---------------------------

GLEW version 1.9.0
Reporting capabilities of pixelformat 3
Running on a Intel(R) HD Graphics 4600 from Intel
OpenGL version 4.3.0 - Build 10.18.14.4264 is supported

GL_VERSION_1_1:                                                OK 
---------------

GL_VERSION_1_2:                                                OK 
---------------
  glCopyTexSubImage3D:                                         OK
  glDrawRangeElements:                                         OK
  glTexImage3D:                                                OK
  glTexSubImage3D:                                             OK

GL_VERSION_1_2_1:                                              OK 
-----------------

GL_VERSION_1_3:                                                OK 
---------------
  glActiveTexture:                                             OK
  glClientActiveTexture:                                       OK
  glCompressedTexImage1D:                                      OK
  glCompressedTexImage2D:                                      OK
  glCompressedTexImage3D:                                      OK
  glCompressedTexSubImage1D:                                   OK
  glCompressedTexSubImage2D:                                   OK
  glCompressedTexSubImage3D:                                   OK

GL_VERSION_3_1:                                                OK 
---------------
  glDrawArraysInstanced:                                       OK
  glDrawElementsInstanced:                                     OK
  glPrimitiveRestartIndex:                                     OK
  glTexBuffer:                                                 OK

GL_VERSION_2_1:                                                OK 
---------------
  glUniformMatrix2x3fv:                                        OK
  glUniformMatrix2x4fv:                                        OK
  glUniformMatrix3x2fv:                                        OK
  glUniformMatrix3x4fv:                                        OK
  glUniformMatrix4x2fv:                                        OK
  glUniformMatrix4x3fv:                                        OK
Nguyễn Hoàng Trung viết 22:43 ngày 30/09/2018

@nguyenchiemminhvu Cho em hỏi: liệu có thể dùng các hàm trong GLFW khi đang dùng GLEW , GLUT không ạ?

Bài liên quan
0