Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 涉及我的代码的奇怪故障_C++_Opengl_Sfml - Fatal编程技术网

C++ 涉及我的代码的奇怪故障

C++ 涉及我的代码的奇怪故障,c++,opengl,sfml,C++,Opengl,Sfml,所以今天,我拿了一些例子,决定制作一个应用程序。所以我尝试了。当我点击一次时,屏幕会变黑,再点击一次,然后变白,在一些垃圾信息出现后,再次点击会使背景变黑,再点击一次,然后变白。在更多的垃圾邮件之后,块内还有另一个块,图片被附加 代码: #include "SFML/Graphics.hpp" #include "SFML/OpenGL.hpp" #include <GL\GLU.h> #include <iostream> #include "cube.cpp" vo

所以今天,我拿了一些例子,决定制作一个应用程序。所以我尝试了。当我点击一次时,屏幕会变黑,再点击一次,然后变白,在一些垃圾信息出现后,再次点击会使背景变黑,再点击一次,然后变白。在更多的垃圾邮件之后,块内还有另一个块,图片被附加

代码:

#include "SFML/Graphics.hpp"
#include "SFML/OpenGL.hpp"
#include <GL\GLU.h>
#include <iostream>
#include "cube.cpp"

void createblock() {

    gluPerspective(90.f, 1.f, 1.f, 300.0f);
    glClearColor(0.3f, 0.3f, 0.3f, 0.f);
    glMatrixMode(GL_PROJECTION);
    glEnable(GL_DEPTH_TEST);
    glDepthMask(GL_TRUE);

    glBegin(GL_QUADS);
    glVertex3f(-50.f, -50.f, -50.f);
    glVertex3f(-50.f, 50.f, -50.f);
    glVertex3f(50.f, 50.f, -50.f);
    glVertex3f(50.f, -50.f, -50.f);


    glVertex3f(-50.f, -50.f, 50.f);
    glVertex3f(-50.f, 50.f, 50.f);
    glVertex3f(50.f, 50.f, 50.f);
    glVertex3f(50.f, -50.f, 50.f);

    glColor3f(1, 0, 1);
    glVertex3f(-50.f, -50.f, -50.f);
    glVertex3f(-50.f, 50.f, -50.f);
    glVertex3f(-50.f, 50.f, 50.f);
    glVertex3f(-50.f, -50.f, 50.f);

    glColor3f(0, 1, 0);
    glVertex3f(50.f, -50.f, -50.f);
    glVertex3f(50.f, 50.f, -50.f);
    glVertex3f(50.f, 50.f, 50.f);
    glVertex3f(50.f, -50.f, 50.f);

    glColor3f(1, 1, 0);
    glVertex3f(-50.f, -50.f, 50.f);
    glVertex3f(-50.f, -50.f, -50.f);
    glVertex3f(50.f, -50.f, -50.f);
    glVertex3f(50.f, -50.f, 50.f);

    glColor3f(1, 0, 0);
    glVertex3f(-50.f, 50.f, 50.f);
    glVertex3f(-50.f, 50.f, -50.f);
    glVertex3f(50.f, 50.f, -50.f);
    glVertex3f(50.f, 50.f, 50.f);

    glEnd();
}

sf::RenderWindow window(sf::VideoMode(800, 600), "SimpleBlocks");
sf::Event maine;

int main() {

    while (window.isOpen()) {
        // load defaults here

        while (window.pollEvent(maine)) {
            // events here
            if (maine.type == sf::Event::Closed) {
                window.close();
            } 
            if (maine.type == sf::Event::MouseButtonPressed) { 
                createblock();
                window.display();

                // make block later   
            }
        }
    }
}
#包括“SFML/Graphics.hpp”
#包括“SFML/OpenGL.hpp”
#包括
#包括
#包括“cube.cpp”
void createblock(){
(90.f,1.f,1.f,300.0f);
glClearColor(0.3f,0.3f,0.3f,0.f);
glMatrixMode(GL_投影);
glEnable(GLU深度试验);
glDepthMask(GL_TRUE);
glBegin(GL_QUADS);
glVertex3f(-50.f,-50.f,-50.f);
glVertex3f(-50.f,50.f,-50.f);
glVertex3f(50.f,50.f,-50.f);
glVertex3f(50.f,-50.f,-50.f);
glVertex3f(-50.f,-50.f,50.f);
glVertex3f(-50.f,50.f,50.f);
glVertex3f(50.f,50.f,50.f);
glVertex3f(50.f,-50.f,50.f);
gl3f(1,0,1);
glVertex3f(-50.f,-50.f,-50.f);
glVertex3f(-50.f,50.f,-50.f);
glVertex3f(-50.f,50.f,50.f);
glVertex3f(-50.f,-50.f,50.f);
gl3f(0,1,0);
glVertex3f(50.f,-50.f,-50.f);
glVertex3f(50.f,50.f,-50.f);
glVertex3f(50.f,50.f,50.f);
glVertex3f(50.f,-50.f,50.f);
gl3f(1,1,0);
glVertex3f(-50.f,-50.f,50.f);
glVertex3f(-50.f,-50.f,-50.f);
glVertex3f(50.f,-50.f,-50.f);
glVertex3f(50.f,-50.f,50.f);
gl3f(1,0,0);
glVertex3f(-50.f,50.f,50.f);
glVertex3f(-50.f,50.f,-50.f);
glVertex3f(50.f,50.f,-50.f);
glVertex3f(50.f,50.f,50.f);
格伦德();
}
sf::RenderWindow窗口(sf::VideoMode(800600),“SimpleBlocks”);
事件缅因州;
int main(){
while(window.isOpen()){
//在此加载默认值
while(window.pollEvent(缅因州)){
//这里的事件
if(maine.type==sf::Event::Closed){
window.close();
} 
如果(maine.type==sf::Event::MouseButtonPressed){
createblock();
window.display();
//请稍后再打积木
}
}
}
}
图像:

#include "SFML/Graphics.hpp"
#include "SFML/OpenGL.hpp"
#include <GL\GLU.h>
#include <iostream>
#include "cube.cpp"

void createblock() {

    gluPerspective(90.f, 1.f, 1.f, 300.0f);
    glClearColor(0.3f, 0.3f, 0.3f, 0.f);
    glMatrixMode(GL_PROJECTION);
    glEnable(GL_DEPTH_TEST);
    glDepthMask(GL_TRUE);

    glBegin(GL_QUADS);
    glVertex3f(-50.f, -50.f, -50.f);
    glVertex3f(-50.f, 50.f, -50.f);
    glVertex3f(50.f, 50.f, -50.f);
    glVertex3f(50.f, -50.f, -50.f);


    glVertex3f(-50.f, -50.f, 50.f);
    glVertex3f(-50.f, 50.f, 50.f);
    glVertex3f(50.f, 50.f, 50.f);
    glVertex3f(50.f, -50.f, 50.f);

    glColor3f(1, 0, 1);
    glVertex3f(-50.f, -50.f, -50.f);
    glVertex3f(-50.f, 50.f, -50.f);
    glVertex3f(-50.f, 50.f, 50.f);
    glVertex3f(-50.f, -50.f, 50.f);

    glColor3f(0, 1, 0);
    glVertex3f(50.f, -50.f, -50.f);
    glVertex3f(50.f, 50.f, -50.f);
    glVertex3f(50.f, 50.f, 50.f);
    glVertex3f(50.f, -50.f, 50.f);

    glColor3f(1, 1, 0);
    glVertex3f(-50.f, -50.f, 50.f);
    glVertex3f(-50.f, -50.f, -50.f);
    glVertex3f(50.f, -50.f, -50.f);
    glVertex3f(50.f, -50.f, 50.f);

    glColor3f(1, 0, 0);
    glVertex3f(-50.f, 50.f, 50.f);
    glVertex3f(-50.f, 50.f, -50.f);
    glVertex3f(50.f, 50.f, -50.f);
    glVertex3f(50.f, 50.f, 50.f);

    glEnd();
}

sf::RenderWindow window(sf::VideoMode(800, 600), "SimpleBlocks");
sf::Event maine;

int main() {

    while (window.isOpen()) {
        // load defaults here

        while (window.pollEvent(maine)) {
            // events here
            if (maine.type == sf::Event::Closed) {
                window.close();
            } 
            if (maine.type == sf::Event::MouseButtonPressed) { 
                createblock();
                window.display();

                // make block later   
            }
        }
    }
}

在绘制之前,您永远不会调用
glClear(GL\u COLOR\u BUFFER\u BIT)
,因此在深度信息中总是存在剩余片段或重叠。添加一个清除调用应该可以解决您的问题。

glupspective
之前调用
glPushMatrix
,在
createblock
末尾调用
glPopMatrix
,有人知道吗?我会非常感激的!我想这就是那个奇怪的lol!它不起作用。。。它做同样的事情,但没有闪烁的黑色和白色时,我点击。它总是灰色的,它只是在随机视野中形成立方体