- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
因此,我正在 OpenGL 中构建一个默认上下文(没有扩展),出于某种原因,我的窗口一打开,我就出现“意外的内核模式陷阱”蓝屏死机
现在,这是非常默认的。因为我刚刚使用了启动 VS 2015 Community win32 应用程序,并逐字应用了 OpenGL 上下文代码。其中包括一个消息框,应该会显示我的 OpenGL 版本 (4.4)。然而,它打开时一片空白,关闭时,当它应该打开 OpenGL CS_DCOWN 窗口时,我出现蓝屏死机。
只是想知道是否有人知 Prop 体导致 BSOD 的命令是什么,或者我的做法是否错误?
我主要来自 Direct3D9 背景。
#include "stdafx.h"
#include "PureGL.h"
#include <gl\GL.h>
#pragma comment (lib, "opengl32.lib");
#define MAX_LOADSTRING 100
// Global Variables:
HINSTANCE hInst; // current instance
WCHAR szTitle[MAX_LOADSTRING]; // The title bar text
WCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// Forward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
// TODO: Place code here.
// Initialize global strings
LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadStringW(hInstance, IDC_PUREGL, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
// Perform application initialization:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_PUREGL));
MSG msg;
// Main message loop:
while (GetMessage(&msg, nullptr, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEXW wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_PUREGL));
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_PUREGL);
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
return RegisterClassExW(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // Store instance handle in our global variable
HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
32,
0, 0, 0, 0, 0, 0,
0,
0,
0,
0, 0, 0, 0,
24,
8,
0,
PFD_MAIN_PLANE,
0,
0, 0, 0
};
HDC ourWindowHandleToDeviceContext = GetDC(hWnd);
int letWindowsChooseThisPixelFormat;
letWindowsChooseThisPixelFormat = ChoosePixelFormat(ourWindowHandleToDeviceContext, &pfd);
SetPixelFormat(ourWindowHandleToDeviceContext, letWindowsChooseThisPixelFormat, &pfd);
HGLRC ourOpenGLRenderingContext = wglCreateContext(ourWindowHandleToDeviceContext);
wglMakeCurrent(ourWindowHandleToDeviceContext, ourOpenGLRenderingContext);
MessageBoxA(0, (char*)glGetString(GL_VERSION), "OPENGL VERSION", 0);
wglDeleteContext(ourOpenGLRenderingContext);
PostQuitMessage(0);
switch (message)
{
case WM_COMMAND:
{
int wmId = LOWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code that uses hdc here...
EndPaint(hWnd, &ps);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
已知问题的硬件详细信息 - AMD FX 6300、ASUS Radeon R9-285
最佳答案
据我所知,GetDC
应该会失败,因为仍然没有为此窗口创建客户区 - 第一个窗口消息是 WM_NC_CREATE
,这还为时过早用于客户区操作。
您只能在 WM_CREATE
之后执行 D3D 代码。
关于c++ - Windows 10 OpenGL 蓝屏, "Kernel Mode Trap",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871873/
我想捕获 CtrL+c 和 CtrL+\,然后将下面的 cmd 添加到我的脚本中: trap _trapException SIGINT SIGQUIT function _trapException
在 Javascript 中,如果我尝试这样做: var obj = {}; obj.z.c.f.d = 'foo'; `TypeError: Cannot read property 'c' of
我所有的脚本中都有一个通用的trap{},用于处理和记录所有不可预见的异常,而这些异常本来不是通过Try/catch处理的。 这很好。 但是,当我有一个带有Windows窗体的脚本时,所有异常都将
我只是想知道它们之间的基本区别。 我在一些地方发现,TRAP本质上也被称为软件中断,或者类似异常的东西。 软件中断和异常之间的基本区别是什么。 软件中断可以通过INT指令产生,但是TRAP只能在某些情
我只是想知道它们之间的基本区别。 我在一些地方发现,TRAP本质上也被称为软件中断,或者类似异常的东西。 软件中断和异常之间的基本区别是什么。 软件中断可以通过INT指令产生,但是TRAP只能在某些情
我正在为 Spigot 编写一个类,它定义了许多新的制作配方。然而,当我调用一个事件时,它有时会抛出一个断言错误:TRAP。我进行了很多研究,但没有发现任何有用的提示或任何东西。 项目.java pa
我有一个范围a(起始范围)和一个范围b(目标范围),我需要缩放一个值aX从范围 a 到范围 b。代码是基本的线性插值: double LinearInterpolation(double a0, do
我在网页末尾发现了一些奇怪的标记,有人可以告诉我这是做什么用的吗? --> 这是一个中文网站:http://mp.weixin.qq.com/s?__biz=MjM5ODMwMzExNQ=
所以首先,我在使用 Java 的 100 级 CS 大学类(class)中。我们的任务是制作一款塔防游戏,我在寻路方面遇到了麻烦。我通过搜索发现 A* 似乎是最好的。虽然当我在路径上放置一个 U 时,
我正在 Windows 中开发一个运行时非 native 二进制翻译器,到目前为止,我已经能够通过使用一个丑陋的使用 Windows SEH 处理无效中断的 hack;但只是因为系统调用 vector
我有一个网格(如下例),其中包含外墙(标记为 W)、环境 block (E)、开放空间 (o) 和事件点 (A)。目前,此网格存储在 [,] 中,其中包含与给定点关联的所有数据。我试图确定是否包含一个
精简版 在 Bash 脚本中,我激活了一个陷阱,然后通过调用 trap - EXIT ERR SIGHUP SIGINT SIGTERM 停用它。 .当我直接在脚本中进行停用时,它可以工作。但是,当我
我试图使用 trap "echo resized" SIGWINCH 检测我的菜单何时调整大小但它似乎没有检测到它。我目前使用的是 ubuntu 20.04,并且我正在使用 bash 脚本来执行此操作
使用 SNMP4J 创建的陷阱发送方中的 privProtocol 3DES、AES192 和 AES256 V3 陷阱发送失败。发生异常情况如下: org.snmp4j.MessageExcepti
我正在编写一个脚本,在启动服务之前等待一堆目录存在。它基本上由一个无限循环组成,该循环在末尾中断,或者在找不到任何需要的目录时继续。简化后,算法本身看起来像 loop_while_false() {
由于 this question,我正在尝试在函数中使用 trap ,并提出了这个次要问题。给定以下代码: d() { trap 'return' ERR false echo
我有一个错误陷阱如下: trap failed ERR function failed { local r=$? set +o errtrace set +o xtrace
如果我的系统上使用了一些命令,我想检测它们。出于这个原因,我在我的 Linux 机器上使用 auditd。但是我不知道是否可以检测到 trap 命令的使用。 也许你能帮帮我 非常感谢 最佳答案 “
我想使用我自己的陷阱监听器来获取 snmp 陷阱。事实上,我使用了在互联网上找到的代码,我添加了一些修改,现在它可以工作了。我可以通过162端口监听。 #include "stdio.h" #incl
我的一个 friend 在尝试调试开始显示“对齐陷阱”错误的代码时遇到了一个大问题。当特定函数访问全局结构时会出现问题。 在网络上进行一些研究后,仍然不清楚“对齐陷阱”是什么意思或是什么。有人可以给出
我是一名优秀的程序员,十分优秀!