วิธีแสดงวงกลมใน OpenGL

ผู้เขียน: Ellen Moore
วันที่สร้าง: 13 มกราคม 2021
วันที่อัปเดต: 7 กรกฎาคม 2024
Anonim
Drawing a circle with OpenGL :: OpenGL and GLSL with C++ :: lesson 6
วิดีโอ: Drawing a circle with OpenGL :: OpenGL and GLSL with C++ :: lesson 6

เนื้อหา

OpenGL หรือ Open Graphics Library เป็น API แบบกราฟิก (Application Programming Interface) สำหรับการเขียนแอปพลิเคชัน 2D และ 3D ในภาษาต่างๆและแพลตฟอร์มการเขียนโปรแกรม มันสามารถใช้ในการแสดงอะไรจากวัตถุที่ง่ายและดั้งเดิมไปจนถึงฉาก 3 มิติที่ซับซ้อน Open GL ถูกใช้อย่างกว้างขวางในการออกแบบด้วยคอมพิวเตอร์การสร้างภาพทางวิทยาศาสตร์การจำลองการบินและวิดีโอเกม แม้ว่า OpenGl ไม่มีวิธีการวาดวงกลมโดยตรงก็เป็นไปได้ที่จะสร้างวิธีการหนึ่งโดยใช้ชุดของเส้น คุณจะต้องมีความรู้พื้นฐานของ OpenGL เพื่อวาดวงกลม


คำสั่ง

ไม่มีวิธีโดยตรงในการสร้างวงกลมใน OpenGL แต่ก็ยังคงเป็นไปได้ที่จะเขียนด้วยวงกลมกับบรรทัดด้านขวาของรหัส (Creatas / Creatas / Getty Images)
  1. สร้างโปรแกรมพื้นฐานด้วยหน้าต่าง OpenGL viewport หากคุณไม่คุ้นเคยกับกระบวนการนี้มีบทช่วยสอนในหน้า OpenGL

  2. เพิ่มไฟล์ math.h.header ไปยังโปรแกรมของคุณโดยป้อนรหัสต่อไปนี้ที่จุดเริ่มต้นของโปรแกรม: #include . สิ่งนี้จะให้ฟังก์ชั่น cos () และ sin () (ไซน์และโคไซน์) ที่จำเป็นสำหรับการคำนวณวงกลม

  3. เริ่มวิธีการวงกลมโดยเพิ่มรหัสต่อไปนี้ก่อนที่จะแสดงฟังก์ชั่นการโทรกลับ:

    โมฆะ drawCircle (GLint x, GLint y, GLint ray, int num_lines) {}

    ตัวแปร "x" และ "y" จะถูกใช้เพื่อกำหนดศูนย์กลางของวงกลมในหน้าต่างของคุณในขณะที่ "เรย์" จะกำหนดรัศมีของวงกลม จำนวนเต็ม "num_lines" คือจำนวนบรรทัดที่ใช้ในการเขียนวงกลม ยิ่งจำนวนนี้มากเท่าไหร่วงกลมก็จะยิ่งดูนุ่มนวลขึ้นเท่านั้น


  4. เพิ่มรหัสการกำหนดค่าต่อไปนี้ภายในคีย์:

    มุมลอย GO int num_lines GO glColor3f (0.0, 0.0, 0.0) GO

    ตัวแปร "มุม" จะมีมุมของเส้นที่ใช้ในการสร้างวงกลม การเรียกใช้ฟังก์ชัน glColor3f () ตั้งค่าสีของเส้นเป็นสีดำโดยที่ชุดสาม 0 สอดคล้องกับความเข้มของสีแดงสีเขียวและสีน้ำเงินในระดับ 0 ถึง 1

  5. เพิ่มรหัสต่อไปนี้ด้านล่างฟังก์ชัน glColor3f () จากขั้นตอนที่ 4:

    glBegin (GL_LINE_LOOP) GO

    สิ่งนี้จะบอก OpenGL ว่าบรรทัดใด ๆ ที่ตามมาเกี่ยวข้องกับการวาดเส้น โดยเฉพาะมันจะวาด "GL_LINE_LOOP" ซึ่งเป็นชุดของสายเชื่อมต่อ

  6. ป้อนรหัสต่อไปนี้จาก a ถึงลูปหลังจากการเรียก glBegin ():

    สำหรับ (int i = 0; i <num_lines; i ++) {angle = i * 2 * M_PI / num_lines; glVertex2f (x + (cos (มุม) * รัศมี) และ + (ไม่มี (มุม) * รัศมี)); }

    เน็คไทนี้ทำสามสิ่ง อันดับแรกมันวนซ้ำตามค่าของ "num_lines" โดยที่ num_lines เป็นจำนวนเต็มวาดเส้นที่การวนซ้ำแต่ละครั้งและทำให้เกิดวงกลมที่ประกอบด้วย num_lines ของเส้นตรง ประการที่สองคำนวณมุมของเส้นที่สัมพันธ์กับจุดศูนย์กลางของวงกลมเป็นเรเดียน "M_P" เป็นค่าคงที่ที่กำหนดใน math.h ซึ่งเป็นตัวแทนของ pi ในที่สุดการเรียก glVertex2f () จะคำนวณพิกัดของจุดสิ้นสุดของแถว


  7. หลังจากวนรอบให้ป้อนบรรทัดของรหัสต่อไปนี้:

    glEnd () GO

    สิ่งนี้จะบอก OpenGL ว่าคุณวาดเส้นเสร็จแล้ว

  8. ในการวาดวงกลมในฉากให้เพิ่มการเรียกจากเมธอด drawCircle () ไปยังฟังก์ชันการเรียกกลับของโปรแกรมซึ่งจะต้องเตรียมในขั้นตอนที่ 1 ระบุค่าของ x, y, รัศมีและ a_line โดยที่ x และ y แทนจุด ในฉากรัศมีคือรัศมีของวงกลมและ num_lines คือจำนวนบรรทัดที่ประกอบเป็นวงกลม ถ้าคุณไม่คุ้นเคยกับ OpenGL และหน้าจอติดต่อกลับให้ดูบทแนะนำของ OpenGL

  9. รวบรวมและเรียกใช้โปรแกรมของคุณ หากคุณป้อนฟังก์ชั่นอย่างถูกต้องควรรวบรวมโดยไม่มีข้อผิดพลาด หากคุณระบุค่า x, y และรัศมีคุณควรเห็นวงกลมสีดำปรากฏบนพื้นหลังสีขาว

สิ่งที่คุณต้องการ

  • คอมพิวเตอร์ที่รองรับ OpenGL
  • เครื่องมือแก้ไขข้อความและเครื่องมือแปลภาษา C หรือสภาพแวดล้อมการพัฒนา C