Я основывался на ответе Вика, чтобы позволить мне иметь разные страницы «Отказано в доступе» для каждой области приложения. Сделали это, вернув вместо этого RedirectToRouteResult
, который вместо перенаправления на URL-адрес относительно корня приложения перенаправляет на контроллер текущей области и действие:
public class AccessDeniedAuthorizeAttribute : AuthorizeAttribute
{
public string AccessDeniedController { get; set; }
public string AccessDeniedAction { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.HttpContext.User.Identity.IsAuthenticated &&
filterContext.Result is HttpUnauthorizedResult)
{
if (String.IsNullOrWhiteSpace(AccessDeniedController) || String.IsNullOrWhiteSpace(AccessDeniedAction))
{
AccessDeniedController = "Home";
AccessDeniedAction = "AccessDenied";
}
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { Controller = AccessDeniedController, Action = AccessDeniedAction }));
}
}
}
]Первое, что нужно сделать, это установить библиотеки OpenGL. Я рекомендую:[
] [freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev] [
]После их установки, при компиляции:[
] [g++ -lglut -lGL -lGLU -lGLEW example.cpp -o example
]
[]В example.cpp включить библиотеки OpenGL так:[
] [#include <GL/glew.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glext.h>
]
[]Затем, чтобы включить более продвинутые опции opengl вроде шейдеров, поместите это после вашего glutCreateWindow Call:[
] [GLenum err = glewInit();
if (GLEW_OK != err)
{
fprintf(stderr, "Error %s\n", glewGetErrorString(err));
exit(1);
}
fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));
if (GLEW_ARB_vertex_program)
fprintf(stdout, "Status: ARB vertex programs available.\n");
if (glewGetExtension("GL_ARB_fragment_program"))
fprintf(stdout, "Status: ARB fragment programs available.\n");
if (glewIsSupported("GL_VERSION_1_4 GL_ARB_point_sprite"))
fprintf(stdout, "Status: ARB point sprites available.\n");
]
[]Это должно включить всю функциональность OpenGL, а если нет, то это должно подсказать вам о проблемах.[
]Возможно, вы захотите использовать Qt для рисования окон и виджетов.
Здесь учебник, основанный на руководствах Nehe, чтобы показать вам, как создавать изображения OpenGL с помощью Qt.
Чтобы изучить OpenGL, необходимо прочитать Красную книгу OpenGL . Есть онлайн-версия. Там очень хорошие объяснения и примеры.