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); }
/** * 获取关注和拉黑某人的用户列表 * @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); }
/* { 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; }
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&))); }
void admf::slot_set_lsv() { query_exec(); }