Код не отображает фигуры, хотя данные вершин выглядят нормально? - PullRequest
1 голос
/ 05 июня 2019

Я настраиваю цифровую аудиовизуальную рабочую станцию ​​для генеративной музыки.Мне нужно визуализировать фигуры из нечетных вершин.Я еще не узнал, как тесселяции пересекающихся вершин, хотя я не думаю, что на экране ничего не должно быть.Я все еще получаю пустой черный экран.Кроме того, мои окна GLUI мерцают и активируются только при нажатии.Как заставить мои данные отображаться на экране?

Я пробовал множество устаревших функций GL и сейчас пытаюсь использовать современные функции GL.Я все еще ничего не вижу на своем экране.

Код: https://pastebin.com/pAeGynGL

    void display(void)
    {
    //glfwMakeContextCurrent(wavebricks_window);
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Set background color to black 
   and opaque
    glLoadIdentity();
    //glTranslatef(1.5f, 0.0f, -7.0f);
    glClear(GL_COLOR_BUFFER_BIT );
    glLoadIdentity();//

    for (int it =0; it<instruments.size();it++){

        alGetSourcef(instruments[it].soundsource, AL_SEC_OFFSET, &tracking);
        instruments[it].currentStep=tracking*(60/tempo);
        instruments[it].currentStep=tracking;
        instruments[it].tempo=tempo;
        instruments[it].render();




        float verts[instruments[it].voices_spinner*3];
        float colors[instruments[it].voices_spinner*3];
        std::string vertexShader;
        std::string fragmentShader;
        for(int i=0; i<instruments[it].voices_spinner; i++){

            verts[3*i]=instruments[it].instrumentPoly[i][0];
            cout<<"\n"<<verts[3*i]<<",";
            verts[3*i+1]=instruments[it].instrumentPoly[i][1];
            cout<<verts[3*i+1]<<",";
            verts[3*i+2]=instruments[it].instrumentPoly[i][2];
            cout<<verts[3*i+2]<<":";
            colors[3*i]=-instruments[it].instrumentPoly[i][3];
            cout<<colors[3*i]<<",";
            colors[3*i+1]=-instruments[it].instrumentPoly[i][4];
            cout<<colors[3*i+1]<<",";
            colors[3*i+2]=-instruments[it].instrumentPoly[i][5];
            cout<<colors[3*i+2]<<";\n";


        }
        unsigned int buffer;
        glGenBuffers(it, &buffer);
        glBindBuffer(GL_ARRAY_BUFFER,buffer);
        glBufferData(GL_ARRAY_BUFFER, sizeof(verts),verts, GL_DYNAMIC_DRAW);
        glDrawArrays(GL_TRIANGLES, 0, instruments[it].voices_spinner);

        vertexShader="#version 330 core\n"
                                    "\n"
                                    "layout(location=0) in vec4 position;\n"
                                    "\n"
                                    "void main()"
                                    "{\n"
                                    "gl_Position=position;\n"
                                    "}\n";
        fragmentShader="#version 330 core\n"
                                    "\n"
                                    "layout(location=0) out vec4 color;\n"
                                    "\n"
                                    "void main()"
                                    "{\n"
                                    "color =     
    vec4(colors[i*3],colors[i*3+1],colors[i*3+2],1.0);\n"
                                    "}\n";
        glEnableVertexAttribArray(0);
        glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,sizeof(float)*3,0);


        unsigned int shader= CreateShader(vertexShader, fragmentShader);
        glUseProgram(shader);

        }
        //glFinish();
       glutSwapBuffers();

    }



    int main(int argc, char **argv)
    {
    cout << "           WaveBricks v 1.0\n      copyright 2019 Noah     
    King(wittymoniker.com)\nmain console window. begin init gl:";
    glutInit(&argc, argv);
    alutInit(&argc, argv);
    glfwInit();
    //    glewInit();

    WBInit();

    initMainBoard();
    //
    ///////////sldjadajsdjjsdaldjsjddjlwdjljw;


    glfwMakeContextCurrent(wavebricks_window);
    while(!glfwWindowShouldClose(wavebricks_window)){
        glutSetWindow(mainboard_pane);
        glutMainLoopEvent();

        glfwMakeContextCurrent(wavebricks_window);
        glClear(GL_COLOR_BUFFER_BIT);
        display();
        glfwSwapBuffers(wavebricks_window);
        glfwPollEvents();

        }



        return EXIT_SUCCESS;
    }

Соответствующие функции: display() и main().

Я ожидал увидеть фигурына моем экране, но вместо этого он прозрачный черный без данных, независимо от того, как я манипулирую своими вершинами.Возможный намек на ответ: каков диапазон камеры GLFW по умолчанию для камеры?Как я могу быть уверен, что мой товар находится даже на экране?Мои вершины выглядят так: https://gyazo.com/fbe4408693b1b2c72f127912425ad247

...