현재 C++에서 루아로 함수를 전달하려고합니다. 문제는이 함수가 (int, int, char *, ...)의 매개 변수를 가지고 있다는 것입니다. 나는 Lua를 사용하는 것에 꽤 새로운 것이다.C++ 및 인수와의 Lua 통합 (...) (루아 5.1)
그래서 나는 루아 스택으로부터 모든 인수를 얻었고 관련 (...) 것들을 벡터에 넣었다. 지금 뭐야? 내가 루아 상태로 전달할 경우
void MVC_View::Printw (float x, float y, const char* format, ...)
{
glRasterPos2f(x,y);
char text[256];
va_list ap;
if(format==NULL)
return;
va_start(ap,format);
vsprintf_s(text,format,ap);
va_end(ap);
glPushAttrib(GL_LIST_BIT);
glListBase(m_base-32);
glCallLists(strlen(text),GL_UNSIGNED_BYTE,text);
glPopAttrib();
}
이것은 :
static int L_PrintDebug(lua_State *state)
{
MVC_View * theView = MVC_View::GetInstance(MVC_Model::GetInstace());
int n = lua_gettop(state);
// check if number of arguments is less than 3
// then we stop as not enough parameters
if(n < 3)
{
std::cout << "Error: printDebug(number,number, char *, ...)" << std::endl;
lua_error(state);
}
// gets parameter
int x = lua_tointeger(state, 1);
int y = lua_tointeger(state, 2);
char * words = (char*) lua_tostring(state, 3);
//Get the rest of the arguments.
std::vector<float> Numbers;
for(int i = 4;i != n; i++)
{
if(lua_type(state,i) == LUA_TNUMBER)
{
float theNumber = lua_tonumber(state,i);
Numbers.push_back(theNumber);
}
}
// call C++ function
//This is where I'm stuck.
theView->Printw(x,y,words);
}
이것은 PrintW 기능은 다음과 같습니다
문제의 코드입니다. 내가 그렇게으로 루아에서 호출 할 수 있도록 노력하겠습니다m_theModel->theInterface.Pushfunction("PrintOnScreen",L_PrintDebug);
,
PrintOnScreen(10, 100, "Camera 2 Pos: %f %f %f", Camx, Camy, Camz)
또는
PrintOnScreen(10,100, "FPS: %f", fps)
대답을 위해 충분히 닫습니다. 감사합니다. – user2418426