コード例 #1
0
	void Render(double time)
	{
		gl.Clear().ColorBuffer().DepthBuffer();

		auto camera = CamMatrixf::Orbiting(
			Vec3f(),
			16.0,
			FullCircles(time * 0.1),
			Degrees(SineWave(time / 20.0) * 30)
		);

		// use the picking program
		pick_prog.Use();
		Uniform<Mat4f>(pick_prog, "CameraMatrix").Set(camera);

		// query the number of values written to the feedabck buffer
		GLuint picked_count = 0;
		{
			Query::Execution<GLuint> query_exec(
				count_query,
				Query::Target::
				TransformFeedbackPrimitivesWritten,
				picked_count
			);
			TransformFeedback::Activator xfb_act(
				TransformFeedbackPrimitiveType::Points
			);
			// draw 36 instances of the cube
			// the vertex shader will take care of their placement
			cube_instr.Draw(cube_indices, 36);
			//
			xfb_act.Finish();
			query_exec.WaitForResult();
		}

		std::map<GLfloat, GLint> picked_objs;
		{
			picked_instances.Bind(Buffer::Target::TransformFeedback);
			BufferTypedMap<DepthAndID> picked_instances_map(
				Buffer::Target::TransformFeedback,
				BufferMapAccess::Read
			);
			picked_objs.insert(
				picked_instances_map.Data(),
				picked_instances_map.Data()+picked_count
			);
		}

		draw_prog.Use();

		Uniform<GLint> picked(draw_prog, "Picked");
		if(picked_objs.empty()) picked = -1;
		else picked = picked_objs.begin()->second;
		Uniform<Mat4f>(draw_prog, "CameraMatrix").Set(camera);

		// draw 36 instances of the cube
		// the vertex shader will take care of their placement
		cube_instr.Draw(cube_indices, 36);
	}
コード例 #2
0
ファイル: friend.c プロジェクト: erichuang1994/fbbs
/**
 * 获取关注和拉黑某人的用户列表
 * @param[in] uid 要查询的用户ID
 * @param[out] followers 关注该用户的用户列表
 * @param[out] blacklisters 拉黑该用户的用户列表
 */
void friend_load_followers_and_blacklisters(user_id_t uid,
		friend_uid_list_t **followers, friend_uid_list_t **blacklisters)
{
	if (!followers || !blacklisters)
		return;

	query_t *q = query_new(0);
	query_select(q, "follower");
	query_from(q, "follows");
	query_where(q, "user_id = %"DBIdUID, uid);
	*followers = query_exec(q);

	q = query_new(0);
	query_select(q, "user_id");
	query_from(q, "blacklists");
	query_where(q, "blocked = %"DBIdUID, uid);
	*blacklisters = query_exec(q);
}
コード例 #3
0
ファイル: board.c プロジェクト: caidongyun/fbbs
/*
{
	groups: [
		{
			name: OPTIONAL TEXT,
			descr: OPTIONAL TEXT,
			boards: [
				{ id: INTEGER, name: TEXT, unread: OPTIONAL BOOLEAN },
				...
			]
		},
		...
	]
}
*/
int api_board_fav(void)
{
	if (!session_id())
		return WEB_ERROR_LOGIN_REQUIRED;

	xml_node_t *root = set_response_root("bbs-board-fav",
			XML_NODE_ANONYMOUS_JSON, XML_ENCODING_UTF8);
	xml_node_t *groups = xml_new_node("groups", XML_NODE_CHILD_ARRAY);
	xml_add_child(root, groups);

	query_t *q = query_new(0);
	query_select(q, "board, name, folder");
	query_from(q, "fav_boards");
	query_where(q, "user_id = %"DBIdUID, session_uid());
	db_res_t *boards = query_exec(q);

	q = query_new(0);
	query_select(q, "id, name, descr");
	query_from(q, "fav_board_folders");
	query_where(q, "user_id = %"DBIdUID, session_uid());
	db_res_t *folders = query_exec(q);

	if (folders && boards) {
		attach_group(groups, boards, FAV_BOARD_ROOT_FOLDER);
		for (int i = db_res_rows(folders) - 1; i >= 0; --i) {
			int id = db_get_integer(folders, i, 0);
			xml_node_t *group = attach_group(groups, boards, id);
			xml_attr_string(group, "name", db_get_value(folders, i, 1), true);
			xml_attr_string(group, "descr", db_get_value(folders, i, 2), true);
		}
	}

	db_clear(folders);
	db_clear(boards);
	return WEB_OK;
}
コード例 #4
0
ファイル: adduser.cpp プロジェクト: Necromoshka/Journal
admf::admf(QWidget *parent) : QWidget(parent)
{
    setupUi(this);
    this->move(QApplication::desktop()->availableGeometry().center() - this->rect().center());
    lv->setModel(&querymodel);


    str_query = "SELECT user From Users";

    query_exec();


//conects

    QObject::connect(addUbt,SIGNAL(clicked()),this,SLOT(slot_user_add()));
    QObject::connect(remUsBt,SIGNAL(clicked()),this,SLOT(slot_user_remove()));
    QObject::connect(this,SIGNAL(signal_ch_good()),this,SLOT(slot_set_lsv()));
    QObject::connect(lv,SIGNAL(clicked(const QModelIndex&)),this, SLOT(slot_lsv_case(const QModelIndex&)));
}
コード例 #5
0
ファイル: adduser.cpp プロジェクト: Necromoshka/Journal
void admf::slot_set_lsv()
{
    query_exec();
}