首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OS中,Horde3D没有呈现到GLFW窗口

在OS中,Horde3D没有呈现到GLFW窗口
EN

Stack Overflow用户
提问于 2013-11-16 02:43:42
回答 1查看 268关注 0票数 0

我是一个经验丰富的程序员,但对C++完全陌生。我在OSX10.5的Xcode 5中使用GLFW 3和Horde3D。

我已经学习了GLFW和Horde3D的基本教程。我能够创建一个窗口,使它成为当前的上下文,显然一个简单的游戏循环运行良好,包括h3dRender( cam )。但我只得到了一扇黑色的窗户。对于我错过的步骤(或整个概念)有什么洞察力吗?

谢谢!(代码如下)

代码语言:javascript
复制
#include <iostream>
#include <GLFW/glfw3.h>
#include <Horde3D.h>
#include <Horde3DUtils.h>

GLFWwindow* window;
H3DNode model = 0, cam = 0;
int winWidth = 640, winHeight = 480;
float fps = 24;
static float t = 0;
bool running = false;

bool initWindow();
bool initGame();
void gameLoop();
void errorListener( int, const char* );
void windowCloseListener( GLFWwindow* );

int main(void)
{
    glfwSetErrorCallback( errorListener );

    if ( !initWindow() ) return -1;
    if ( !initGame() ) return -1;

    running = true;
    while ( running )
    {
        gameLoop();
    }

    h3dRelease();
    glfwDestroyWindow( window );
    glfwTerminate();
    exit( EXIT_SUCCESS );
}

bool initWindow()
{
    if ( !glfwInit() ) return -1;

    window = glfwCreateWindow( winWidth, winHeight, "Hello World", NULL, NULL );
    if ( !window )
    {
        glfwTerminate();
        exit( EXIT_FAILURE );
    }

    glfwSetWindowCloseCallback( window, windowCloseListener );
    glfwMakeContextCurrent( window );
    glfwSwapInterval( 0 );

    return true;
}

bool initGame()
{
    if ( !h3dInit() ) return false;

    H3DRes pipeRes = h3dAddResource( H3DResTypes::Pipeline, "standard.pipeline", 0 );
    H3DRes modelRes = h3dAddResource( H3DResTypes::SceneGraph, "character.scene.xml", 0 );
    H3DRes animRes = h3dAddResource( H3DResTypes::Animation, "walk.anim.xml", 0 );
    h3dutLoadResourcesFromDisk( "" );

    model = h3dAddNodes( H3DRootNode, modelRes );
    h3dSetupModelAnimStage( model, 0, animRes, 0, "", false );

    H3DNode light = h3dAddLightNode( H3DRootNode, "Light 1", 0, "LIGHTING", "SHADOWMAP" );
    h3dSetNodeTransform( light, 0, 20, 0, 0, 0, 0, 1, 1, 1 );
    h3dSetNodeParamF( light, H3DLight::RadiusF, 0, 50.0f );

    cam = h3dAddCameraNode( H3DRootNode, "Camera", pipeRes );

    h3dSetNodeParamI( cam, H3DCamera::ViewportXI, 0 );
    h3dSetNodeParamI( cam, H3DCamera::ViewportYI, 0 );
    h3dSetNodeParamI( cam, H3DCamera::ViewportWidthI, winWidth );
    h3dSetNodeParamI( cam, H3DCamera::ViewportHeightI, winHeight );
    h3dSetupCameraView( cam, 45.0f, ( float ) winWidth / winHeight, 0.5f, 2048.0f );
    h3dResizePipelineBuffers( pipeRes, winWidth, winHeight );

    return true;
}

void gameLoop ()
{
    t = t + 10.f * ( 1/ fps );
    h3dSetModelAnimParams( model, 0, t, 1.0f );
    h3dSetNodeTransform( model, t * 10, 0, 0, 0, 0, 0, 1, 1, 1 );
    h3dRender( cam );
    h3dFinalizeFrame();
    glfwSwapBuffers( window );
    glfwPollEvents();
}

void errorListener( int error, const char* description )
{
    fputs( description, stderr );
}

void windowCloseListener( GLFWwindow* window )
{
    running = false;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-09 03:00:46

您无法查看任何内容,因为没有为您的应用程序加载资源。您需要指定保存资源的目录路径(如character.scene.xml、walk.anim.xml等)。作为h3dutLoadResourcesFromDisk()的一个参数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20013990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档