Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.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++ cocos2dx(3.2)中的自定义openGL图形_C++_Opengl Es_Cocos2d X - Fatal编程技术网

C++ cocos2dx(3.2)中的自定义openGL图形

C++ cocos2dx(3.2)中的自定义openGL图形,c++,opengl-es,cocos2d-x,C++,Opengl Es,Cocos2d X,我正试图在cocos2dx上用openGL在屏幕上画一个三角形。目前,我已经对cocos的节点对象进行了子类化,我在其中进行绘图 在最新版本的cocos2dx中,我无法覆盖draw()函数,而是尝试覆盖draw(Renderer*Renderer,const Mat4&transform,uint32_t flags)并向呈现器添加自定义命令,如下所示 const GLfloat vertices[9] = { -0.5f, -0.5f, 0.0f, 0.5f, -0.5

我正试图在cocos2dx上用openGL在屏幕上画一个三角形。目前,我已经对cocos的节点对象进行了子类化,我在其中进行绘图

在最新版本的cocos2dx中,我无法覆盖
draw()
函数,而是尝试覆盖
draw(Renderer*Renderer,const Mat4&transform,uint32_t flags)
并向呈现器添加自定义命令,如下所示

    const GLfloat vertices[9] = {
    -0.5f, -0.5f, 0.0f,
    0.5f, -0.5f, 0.0f,
    0.0f, 0.5f, 0.0f
};



void MyNodeSubclass::draw(Renderer* renderer, const Mat4 &transform, uint32_t flags){
     CustomCommand *_customCommand = new CustomCommand();
    _customCommand->init(_globalZOrder);
    _customCommand->func = CC_CALLBACK_0(MyNodeSubclass::drawTriangle, this);
    renderer->addCommand(_customCommand);
   }

void MyNodeSubclass::drawTriangle(){
   glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION);
    glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE,0, vertices);
    glDrawArrays(GL_TRIANGLES, 0, 3);
}
和我的加载着色器方法

void MyNodeSubclass::loadOurShaders(){
              GLProgram* myShader = new GLProgram();
              myShader->initWithFilenames("shader.vert", "shader.frag");
              myShader->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_POSITION, GLProgram::VERTEX_ATTRIB_POSITION);
              myShader->link();
              myShader->updateUniforms();
   }
我在屏幕上看不到三角形。但我可以通过使用openGL交换drawTriangle函数中的内容(而不是顶点),来绘制cocos2dx基本对象(多边形、点、线)


这里缺少什么?

在名为
vVertices
的变量中包含顶点数据,该变量保存顶点坐标,但使用变量
顶点
指定顶点属性。它们是一样的吗?对不起,这是一个打字错误,它的意思是“顶点”贯穿始终。此外,仔细观察,三角形似乎在屏幕上出现了很短的时间(不到一秒钟),然后消失了。知道会发生什么吗?