Vẽ đường thẳng trong C bằng OpenGL

Em chào anh chị, em mới tự học C một thời gian ngắn.

Bây giờ em cần vẽ 1 đường thẳng trong C, em có thử dùng graphics.h mà không được. Em tìm thấy nguồn này về OpenGL và đang bắt đầu học bài 1.

http://www.opengl-tutorial.org/

Em muốn hỏi đây có phải là hướng đúng để đạt được kiến thức em cần ở trên không ạ ?
Em cám ơn anh chị ạ.

1 Like

Viết C thì OpenGL hoặc Qt để làm đồ họa là chuẩn rồi bạn :grin:

1 Like

graphic.h không phải thư viện chuẩn của C. Thường nói tới thư viện này là ngta nghĩ ngay tới việc vẽ đồ hoạ cho màn hình DOS. Mà dĩ nhiên, bây giờ chẳng còn ai dùng DOS nữa.

Hãy sử dụng một thư viện về đồ hoạ, rất nhiều nhé. Ví dụ: Win32 API, Microsoft Windows GDI+, GTK+, Qt+, Cairo, OpenGL, libsdl, Juce, CImg…thậm chí chơi cả game engine cũng ngon, như LibGDX, Cocos2DX, Corona, Unity3D, UnrealEngine … :smiley:

Mới học thì anh khuyên nên đi theo lộ trình này:

  • OpenGL trước để tiếp cận các khái niệm về hình học không gian, camera, viewport, vertex, shading…
  • Win32 API: để biết cách Windows render UI thế nào.

(Học Win32 API trước cũng được, nhưng sẽ dễ nản khi nhảy tiếp sang OpenGL, nên học OpenGL trước)

Sau đó thì tìm hiểu cái gì khác cũng được. Vì lúc này đã có trong đầu các kiến thức đồ hoạ rồi. Lúc này có thể xấn tới làm game.

2 Likes

Cho em hỏi làm sao để học Opengl hiệu quả được ạ, em xem nhiều tut thấy toàn viết sẵn code với giải thích vắn tắt quá nên em không học vô @@

Không hiểu vì có biét về hình học không gian đâu mà hiểu :)).

Đọc tuts soi code nó nhiều lần vào. Học thuộc code mẫu của nó tới mức, ghi nhớ từng chữ từng dấu và có thể gõ lại được mà không có xem lại.

Trong lúc gõ đi gõ lại sẽ vỡ ra, lúc này cũng gặp một số khái niệm lạ lùng, lúc này cần tra cứu Google để biết nó là cái gì.

Học bằng cách đặt tay vào gõ, chứ không phải bằng mắt nhìn.

Learn by doing, not by seeing.

Chừng nào mà hỏi bất cứ 1 hàm nào trong openGL mà có thể biết áp dụng, lúc đó là gọi là đã biết sử dụng OpenGL.

Cái em không hiểu là hàm của nó anh ạ :v chứ hình không gian em đang học tại hiện tại em đang học 12 rồi ạ :peace:

Muốn học OpenGL lắm nhưng kiến thức chưa đụng tới hình học không gian :frowning:
Đang còn cày mấy cái hình đa giác, hình chóp … đây :sob:

1 Like

Học như anh chỉ ở trên, rồi chú sẽ hiểu. Sau này, thành công thì đừng có bất ngờ nhé. Mời anh ly cà phê ban mê là được. :))

3 Likes

Nhất định có ngày em mời anh 1 ly :))

2 Likes

Nếu mới bắt đầu học OpenGL mà ko vững mấy thứ như Win32 API như anh Patê nói thì cứ xài glfw cho tiện, bỏ đc mấy cái khâu tạo window, handling event message đồ…

Cơ mà trên OpenGL-Tutorial giờ nó viết tut trên OpenGL 3 rồi, nó hơi phức tạp một xíu (cái render pipeline phức tạp) vì dù là để vẽ một đường thẳng 2D, bạn vẫn phải nắm các khái niệm về 3D (như là vertex, vbo, shader,…)

Mình thấy sê ri này dễ đọc hơn nếu mới bắt đầu: https://open.gl/introduction

Đọc xong trong này qua đọc tiếp OpenGL-Tutorial là đẹp.

Cơ mà lớp 12, mà ko lo ôn thi ĐH, dám ngồi học OpenGL, khá đấy :v

5 Likes

Em chỉ có nguyên tối thứ 7 + sáng chủ nhật để em nghiên cứu thôi ạ :)) chứ bình thường vẫn ưu tiên đại học hơn :smiley: mà cái em thắc mắc là Opengl có nhiều lib quá, em không biết nên học hay dùng cái nào , với làm sao để áp dụng Opengl trong việc làm game? Liệu mình có thể áp dụng Opengl vô những engine có sẵn hay phải tạo ra engine của riêng mình ạ @@ em cảm ơn

E cứ suy nghĩ thế này. Giả sử coi việc làm game là "ngồi lên cái xe đạp chạy từ sài gòn ra đà nẵng.

Nếu dùng OpenGL để làm game, thì giống như e muốn đi xe đạp đó, nhưng lại đi tự mua từ sên, xích, bánh xe, khung sườn về ráp thành xe đạp, điều bất lợi là e phải tự tay làm mọi việc trước khi có cái xe đạp, trong quá trình làm thì chưa chắc cái xe đạp đã chạy được ngay mà lắp giữa chừng thiếu bà nó cái ghi đông chẳng hạn =))) rồi lắp xong cái xe đạp thì e còn phải ngồi lên và lái nó ra đà nẵng, tốn biết bao nhiêu là thời gian. Nhưng trong quá trình đó e học được rất là nhiều thứ, từ khí động lực học cho tới cấu tạo xe đạp, cho tới các kĩ thuật vật lý vận hành nên cái xe đạp. Và tất nhiên, vì là e build ra nó, e có thể lắp bình khí nén nitro vào cái bàn đạp, hoặc lắp thêm quả tên lửa vào đuôi xe đạp cho nó bay vèo 1 phát ra tận hà nội tùy thích, vì lúc này e đã hiểu rõ mọi ngóc ngách trong cái xe đạp đó rồi.

Còn những engine có sẵn, là do các hãng sản xuất xe đạp họ cũng bỏ ra thời gian nghiên cứu làm cái xe đạp như e, nhưng họ làm nhiều rồi, lành nghề rồi giờ họ sản xuất hàng loạt với các mẫu mã, kiểu dáng khác nhau, tất nhiên họ bán kèm cái xe đạp với một đống đồ nghề cần thiết, và tài liệu để sử dụng xe đạp. Việc e sử dụng cái xe đạp của mấy hãng đó để đạp từ sài gòn ra hà nội, đơn giản chỉ có việc ngồi lên và lái đi. E ko thể nào mổ bụng chiếc xe đạp ra để thay hệ thống sên, xích, líp của riêng e được. Và cái xe đạp họ bán thế nào e dùng thế đó. Ko thêm ko bớt gì vô cái xe đạp đó được. Nhưng bù lại thì ngồi lên và đạp đi thôi.

Quay lại vụ game engine. Đa phần mấy cái game engine đều sử dụng OpenGL để làm nền tảng render, bên cạnh OpenGL (cho việc render), thì một engine còn tập hợp rất là nhiều thành phần khác như là file system, networking, entity manager, scripting engine,…

Nếu e chỉ muốn làm game, thì a khuyên nên bắt đầu học một engine nào đó luôn (ví dụ Cocos2D, Unity). Còn nếu e muốn hiểu rõ một engine làm gì bên dưới thì có thể nghiên cứu sâu về engine sau.

4 Likes

Em dùng Unity cũng được gần 2 năm rồi anh ạ, gần đây em chuyển sang Opengl nhưng vẫn lo về tính úng dụng của nó trong việc làm game , nhờ anh khai sáng điểm này cho em :v chứ em dùng engine nhiều nên em cũng rõ ưu nhươc của việc này rồi, riêng việc dùng Opengl thì em không rõ @@

1 Like

Dạ em cám ơn anh Pete nhiều ạ. Em sẽ học theo lộ trình OpenGL - Win32 API.

1 Like

Em cám ơn anh Huy ạ.

1 Like

Dành cho bạn nào chưa biết set up OpenGL cho C++ trên Visual Studio 2015. This guy is amazing. :heart_eyes:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?