Ejemplo n.º 1
0
void ApplicationManager::luaError(const char *error)
{
	glog_e("%s", error);

	if (player_ == true)
	{
		running_ = false;

		networkManager_->printToServer(error, -1);
		networkManager_->printToServer("\n", -1);
		application_->deinitialize();
		application_->initialize();	
	}
	else
	{
		JNIEnv *env = g_getJNIEnv();
		jstring jerrormsg = env->NewStringUTF(error);
		jclass localRefCls = env->FindClass("com/giderosmobile/android/player/GiderosApplication");
		jmethodID throwError = env->GetStaticMethodID(localRefCls, "throwLuaException", "(Ljava/lang/String;)V");
		env->CallStaticVoidMethod(localRefCls, throwError, jerrormsg);
		env->DeleteLocalRef(jerrormsg);
		env->DeleteLocalRef(localRefCls);
		//g_exit();
	}
}
Ejemplo n.º 2
0
PrintStackChecker::~PrintStackChecker()
{
	int end = lua_gettop(L);
	if (begin_ + delta_ == end)
		;
	else
        glog_e("*%s* stack NOT ok begin:%d end:%d delta:%d", pre_, begin_, end, delta_);
}
Ejemplo n.º 3
0
void dx11ShaderProgram::drawArrays(ShapeType shape, int first,
		unsigned int count) {
	ShaderEngine::Engine->prepareDraw(this);
	activate();
	updateConstants();

	if (shape == Point)
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_POINTLIST);
	else if (shape == TriangleStrip)
		g_devcon->IASetPrimitiveTopology(
				D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
	else if (shape == TriangleFan) {
		D3D11_MAPPED_SUBRESOURCE ms;
		int ntris = count - 2;
		ID3D11Buffer *vbo = getGenericVBO(0, 2, 1, 3 * ntris);
		g_devcon->Map(vbo, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &ms); // map the buffer
		unsigned short *i = (unsigned short *) ms.pData;
		for (int t = 0; t < ntris; t++) {
			*(i++) = first;
			*(i++) = first + t + 1;
			*(i++) = first + t + 2;
		}
		g_devcon->Unmap(vbo, NULL);                          // unmap the buffer
		g_devcon->IASetIndexBuffer(vbo, DXGI_FORMAT_R16_UINT, 0);
		curIndicesVBO = vbo;
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
		g_devcon->DrawIndexed(ntris * 3, 0, 0);
		return;
	} else if (shape == Triangles)
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
	else if (shape == LineLoop) {
		D3D11_MAPPED_SUBRESOURCE ms;
		ID3D11Buffer *vbo = getGenericVBO(0, 2, 1, count + 1);
		g_devcon->Map(vbo, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &ms); // map the buffer
		unsigned short *i = (unsigned short *) ms.pData;
		for (int t = 0; t < count; t++)
			*(i++) = first + t;
		*(i++) = first;
		g_devcon->Unmap(vbo, NULL);                          // unmap the buffer
		g_devcon->IASetIndexBuffer(vbo, DXGI_FORMAT_R16_UINT, 0);
		curIndicesVBO = vbo;
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP);
		g_devcon->DrawIndexed(count + 1, 0, 0);
		return;
	} else if (shape == Lines)
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_LINELIST);
	else {
		glog_e("glDrawArrays unknown pattern\n");
		exit(1);
	}

	g_devcon->Draw(count, 0);
}
Ejemplo n.º 4
0
void ApplicationManager::luaError(const char *error) {
	glog_e("%s", error);

	{
		/*		JNIEnv *env = g_getJNIEnv();
		 jstring jerrormsg = env->NewStringUTF(error);
		 jclass localRefCls = env->FindClass("com/giderosmobile/android/player/GiderosApplication");
		 jmethodID throwError = env->GetStaticMethodID(localRefCls, "throwLuaException", "(Ljava/lang/String;)V");
		 env->CallStaticVoidMethod(localRefCls, throwError, jerrormsg);
		 env->DeleteLocalRef(jerrormsg);
		 env->DeleteLocalRef(localRefCls);
		 //g_exit(); */
	}
}
Ejemplo n.º 5
0
void dx11ShaderProgram::drawElements(ShapeType shape, unsigned int count,
		DataType type, const void *indices, bool modified, ShaderBufferCache **cache,unsigned int first,unsigned int dcount) {
	ShaderEngine::Engine->prepareDraw(this);
	activate();
	updateConstants();

	int indiceSize = 4;
	DXGI_FORMAT iFmt = DXGI_FORMAT_R32_UINT;

	if (type == DUSHORT) {
		indiceSize = 2;
		iFmt = DXGI_FORMAT_R16_UINT;
	}

	D3D11_MAPPED_SUBRESOURCE ms;
	ID3D11Buffer *vbo = cache ? getCachedVBO(cache, true, indiceSize, 1, count) : getGenericVBO(0,indiceSize,1,count);
	if (modified || (!cache))
	{
		g_devcon->Map(vbo, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &ms); // map the buffer
		memcpy(ms.pData, indices, indiceSize * count);              // copy the data
		g_devcon->Unmap(vbo, NULL);                              // unmap the buffer
	}

	UINT stride = indiceSize;
	UINT offset = 0;

	if ((curIndicesVBO != vbo) || (!cache))
	{
		g_devcon->IASetIndexBuffer(vbo, iFmt, 0);
		curIndicesVBO = vbo;
	}

	if (shape == Point)
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_POINTLIST);
	else if (shape == TriangleStrip)
		g_devcon->IASetPrimitiveTopology(
				D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
	else if (shape == Triangles)
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
	else if (shape == LineLoop)
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP);
	else if (shape == Lines)
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_LINELIST);
	else {
		glog_e("glDrawElements: bad mode\n");
		exit(1);
	}

	g_devcon->DrawIndexed(dcount?dcount:count, first, 0);
}
Ejemplo n.º 6
0
void dx11ShaderProgram::drawArrays(ShapeType shape, int first,
		unsigned int count) {
	ShaderEngine::Engine->prepareDraw(this);
	activate();
	updateConstants();

	if (shape == Point)
	{
		if (flags&ShaderProgram::Flag_PointShader)
		{
			D3D11_MAPPED_SUBRESOURCE ms;
			int ntris = count;
			bool changed = ((genVBO[0] == NULL) || (genVBOcapacity[0] < (6 * ntris))); //We should really check if first is still the same here, but current gideros code uses 0 for Point Shaders

			ID3D11Buffer *vbo = getGenericVBO(0, 2, 1, 6 * ntris);
			if (changed)
			{
				g_devcon->Map(vbo, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &ms); // map the buffer
				unsigned short *i = (unsigned short *)ms.pData;

				for (int t = 0; t < ntris; t++) {
					unsigned short b = (first + t) * 4;
					*(i++) = b + 0;
					*(i++) = b + 1;
					*(i++) = b + 2;
					*(i++) = b + 0;
					*(i++) = b + 2;
					*(i++) = b + 3;
				}
				g_devcon->Unmap(vbo, NULL);                          // unmap the buffer
			}
			g_devcon->IASetIndexBuffer(vbo, DXGI_FORMAT_R16_UINT, 0);
			curIndicesVBO = vbo;
			g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
			g_devcon->DrawIndexed(ntris * 6, 0, 0);
			return;
		}
		else
			g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_POINTLIST);

	}
	else if (shape == TriangleStrip)
		g_devcon->IASetPrimitiveTopology(
				D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
	else if (shape == TriangleFan) {
		D3D11_MAPPED_SUBRESOURCE ms;
		int ntris = count - 2;
		ID3D11Buffer *vbo = getGenericVBO(0, 2, 1, 3 * ntris);
		g_devcon->Map(vbo, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &ms); // map the buffer
		unsigned short *i = (unsigned short *) ms.pData;
		for (int t = 0; t < ntris; t++) {
			*(i++) = first;
			*(i++) = first + t + 1;
			*(i++) = first + t + 2;
		}
		g_devcon->Unmap(vbo, NULL);                          // unmap the buffer
		g_devcon->IASetIndexBuffer(vbo, DXGI_FORMAT_R16_UINT, 0);
		curIndicesVBO = vbo;
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
		g_devcon->DrawIndexed(ntris * 3, 0, 0);
		return;
	} else if (shape == Triangles)
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
	else if (shape == LineLoop) {
		D3D11_MAPPED_SUBRESOURCE ms;
		ID3D11Buffer *vbo = getGenericVBO(0, 2, 1, count + 1);
		g_devcon->Map(vbo, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &ms); // map the buffer
		unsigned short *i = (unsigned short *) ms.pData;
		for (int t = 0; t < count; t++)
			*(i++) = first + t;
		*(i++) = first;
		g_devcon->Unmap(vbo, NULL);                          // unmap the buffer
		g_devcon->IASetIndexBuffer(vbo, DXGI_FORMAT_R16_UINT, 0);
		curIndicesVBO = vbo;
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP);
		g_devcon->DrawIndexed(count + 1, 0, 0);
		return;
	} else if (shape == Lines)
		g_devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_LINELIST);
	else {
		glog_e("glDrawArrays unknown pattern\n");
		exit(1);
	}

	g_devcon->Draw(count, 0);
}