سؤال

كيف وفي أي مرحلة يتم إنشاء سياق OpenGL صالح في الكود الخاص بي؟أتلقى أخطاء حتى في كود OpenGL البسيط.

هل كانت مفيدة؟

المحلول

من المشاركات على comp.graphics.api.opengl, ، يبدو أن معظم المبتدئين يحرقون أيديهم عند أول برنامج OpenGL خاص بهم.في معظم الحالات، يحدث الخطأ بسبب استدعاء وظائف OpenGL حتى قبل إنشاء سياق OpenGL صالح.OpenGL هو جهاز حالة.فقط بعد بدء تشغيل الآلة ووصولها إلى حالة الاستعداد، يمكن تشغيلها.

فيما يلي بعض التعليمات البرمجية البسيطة لإنشاء سياق OpenGL صالح:

#include <stdlib.h>
#include <GL/glut.h>

// Window attributes
static const unsigned int WIN_POS_X = 30;
static const unsigned int WIN_POS_Y = WIN_POS_X;
static const unsigned int WIN_WIDTH = 512;
static const unsigned int WIN_HEIGHT = WIN_WIDTH;

void glInit(int, char **);

int main(int argc, char * argv[])
{
    // Initialize OpenGL
    glInit(argc, argv);

    // A valid OpenGL context has been created.
    // You can call OpenGL functions from here on.

    glutMainLoop();

    return 0;
}

void glInit(int argc, char ** argv)
{
    // Initialize GLUT
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE);
    glutInitWindowPosition(WIN_POS_X, WIN_POS_Y);
    glutInitWindowSize(WIN_WIDTH, WIN_HEIGHT);
    glutCreateWindow("Hello OpenGL!");

    return;
}

ملحوظة:

  • نداء الاهتمام هنا glutCreateWindow().فهو لا يقوم بإنشاء نافذة فحسب، بل يقوم أيضًا بإنشاء سياق OpenGL.
  • النافذة التي تم إنشاؤها باستخدام glutCreateWindow() غير مرئي حتى glutMainLoop() يسمى.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top