7 changed files with 347 additions and 0 deletions
-
40.gitignore
-
104main.cpp
-
BINshader2.VC.VC.opendb
-
BINshader2.VC.db
-
28shader2.sln
-
153shader2.vcxproj
-
22shader2.vcxproj.filters
@ -0,0 +1,40 @@ |
|||
# ---> C++ |
|||
# Prerequisites |
|||
*.d |
|||
|
|||
# Compiled Object files |
|||
*.slo |
|||
*.lo |
|||
*.o |
|||
*.obj |
|||
|
|||
# Precompiled Headers |
|||
*.gch |
|||
*.pch |
|||
|
|||
# Compiled Dynamic libraries |
|||
*.so |
|||
*.dylib |
|||
*.dll |
|||
|
|||
# Fortran module files |
|||
*.mod |
|||
*.smod |
|||
|
|||
# Compiled Static libraries |
|||
*.lai |
|||
*.la |
|||
*.a |
|||
*.lib |
|||
|
|||
# Executables |
|||
*.exe |
|||
*.out |
|||
*.app |
|||
|
|||
#vs2015 |
|||
Debug |
|||
Release |
|||
x64 |
|||
.git |
|||
ipch |
@ -0,0 +1,104 @@ |
|||
#include <windows.h>
|
|||
#include <gl/GL.h>
|
|||
#include <stdio.h>
|
|||
#pragma comment(lib,"opengl32.lib")
|
|||
|
|||
/**
|
|||
* @hwnd 发起消息的窗口 |
|||
* @msg 消息类型 |
|||
*/ |
|||
LRESULT CALLBACK GLWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { |
|||
switch (msg) { |
|||
case WM_CLOSE: |
|||
PostQuitMessage(0); |
|||
return 0; |
|||
} |
|||
|
|||
return DefWindowProc(hwnd, msg, wParam, lParam);//其他消息调用window默认处理函数
|
|||
} |
|||
|
|||
/**
|
|||
* @hinstance 本应用程序启动实例 |
|||
* @hPrevInstance 上一次应用程式的实例 |
|||
* @IpCmdLine 命令行的参数 |
|||
* @ShowCmd 怎么显示窗口 |
|||
*/ |
|||
INT WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) |
|||
{ |
|||
/*注册窗口*/ |
|||
WNDCLASSEX wndclass; |
|||
wndclass.cbClsExtra = 0; //窗口类型的额外空间,这里不需要
|
|||
wndclass.cbSize = sizeof(WNDCLASSEX); //窗口实际占用的内存
|
|||
wndclass.cbWndExtra = 0; //窗口的额外空间,这里不需要
|
|||
wndclass.hbrBackground = NULL; //窗口背景
|
|||
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); //定义鼠标类型
|
|||
wndclass.hIcon = NULL; //应用程序exe文件显示图标
|
|||
wndclass.hIconSm = NULL; //应用程序运行时左上角图标
|
|||
wndclass.hInstance = hinstance; //本应用程序实例
|
|||
wndclass.lpfnWndProc = GLWindowProc; //如果用户操作了窗口,本函数会被调用
|
|||
wndclass.lpszClassName = L"GLWindow";//窗口名称
|
|||
wndclass.lpszMenuName = NULL;//菜单名称
|
|||
wndclass.style = CS_VREDRAW | CS_HREDRAW;//窗口更新时的重绘方式,这里使用垂直重绘和水平重绘
|
|||
ATOM atom = RegisterClassEx(&wndclass); |
|||
if (!atom) { |
|||
MessageBox(NULL, L"Register failed", L"Error", MB_OK); |
|||
return 0; |
|||
} |
|||
|
|||
/*创建窗口*/ |
|||
//调整窗口大小
|
|||
RECT rect; |
|||
rect.left = 0; |
|||
rect.right = 800; |
|||
rect.top = 0; |
|||
rect.bottom = 600; |
|||
AdjustWindowRect(&rect, WS_EX_OVERLAPPEDWINDOW, NULL); |
|||
int windowWidth = rect.right - rect.left; |
|||
int windowHeight = rect.bottom - rect.top; |
|||
|
|||
//窗口名称一定要和刚才注册窗口的保持一致
|
|||
HWND hwnd = CreateWindowEx(NULL, L"GLWindow", L"OpenGL Window", WS_OVERLAPPEDWINDOW, 100, 100, windowWidth, windowHeight, NULL, NULL, hinstance, NULL); |
|||
|
|||
//设置渲染环境
|
|||
HDC dc = GetDC(hwnd);//获取设备上下文
|
|||
PIXELFORMATDESCRIPTOR pfd; |
|||
memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR)); |
|||
pfd.nVersion = 1; |
|||
pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); |
|||
pfd.cColorBits = 32; //颜色缓冲区每个像素为32比特4通道RGBA
|
|||
pfd.cDepthBits = 24; //深度缓冲区每个像素大小,24比特表示一个浮点数
|
|||
pfd.cStencilBits = 8; //蒙板缓冲区每像素为8比特
|
|||
pfd.iPixelType = PFD_TYPE_RGBA; //设置像素类型为RGBA
|
|||
pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; //表示像素最后输出到窗口
|
|||
//设置像素格式
|
|||
int pixelFormat = ChoosePixelFormat(dc, &pfd); |
|||
SetPixelFormat(dc, pixelFormat, &pfd); |
|||
|
|||
//创建OpenGL渲染环境
|
|||
HGLRC rc = wglCreateContext(dc); |
|||
wglMakeCurrent(dc, rc);//设置OpenGL渲染环境生效
|
|||
|
|||
glClearColor(1.0f, 1.0f, 0.0f, 1.0f); |
|||
|
|||
/*显示窗口*/ |
|||
ShowWindow(hwnd, SW_SHOW); |
|||
UpdateWindow(hwnd); |
|||
|
|||
/*监听并处理用户请求*/ |
|||
MSG msg; |
|||
while (true) { |
|||
if (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)) { |
|||
if (msg.message == WM_QUIT) { |
|||
break; |
|||
} |
|||
TranslateMessage(&msg); |
|||
DispatchMessage(&msg); |
|||
} |
|||
|
|||
glClear(GL_COLOR_BUFFER_BIT); |
|||
|
|||
SwapBuffers(dc); |
|||
} |
|||
|
|||
return 0; |
|||
} |
@ -0,0 +1,28 @@ |
|||
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00 |
|||
# Visual Studio 14 |
|||
VisualStudioVersion = 14.0.25420.1 |
|||
MinimumVisualStudioVersion = 10.0.40219.1 |
|||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shader2", "shader2.vcxproj", "{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}" |
|||
EndProject |
|||
Global |
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
|||
Debug|x64 = Debug|x64 |
|||
Debug|x86 = Debug|x86 |
|||
Release|x64 = Release|x64 |
|||
Release|x86 = Release|x86 |
|||
EndGlobalSection |
|||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
|||
{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}.Debug|x64.ActiveCfg = Debug|x64 |
|||
{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}.Debug|x64.Build.0 = Debug|x64 |
|||
{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}.Debug|x86.ActiveCfg = Debug|Win32 |
|||
{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}.Debug|x86.Build.0 = Debug|Win32 |
|||
{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}.Release|x64.ActiveCfg = Release|x64 |
|||
{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}.Release|x64.Build.0 = Release|x64 |
|||
{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}.Release|x86.ActiveCfg = Release|Win32 |
|||
{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}.Release|x86.Build.0 = Release|Win32 |
|||
EndGlobalSection |
|||
GlobalSection(SolutionProperties) = preSolution |
|||
HideSolutionNode = FALSE |
|||
EndGlobalSection |
|||
EndGlobal |
@ -0,0 +1,153 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup Label="ProjectConfigurations"> |
|||
<ProjectConfiguration Include="Debug|Win32"> |
|||
<Configuration>Debug</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Release|Win32"> |
|||
<Configuration>Release</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Debug|x64"> |
|||
<Configuration>Debug</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Release|x64"> |
|||
<Configuration>Release</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
</ItemGroup> |
|||
<PropertyGroup Label="Globals"> |
|||
<ProjectGuid>{7BF953FA-C4AE-4FD4-9DD5-91F683C18173}</ProjectGuid> |
|||
<Keyword>Win32Proj</Keyword> |
|||
<RootNamespace>shader2</RootNamespace> |
|||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> |
|||
</PropertyGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Application</ConfigurationType> |
|||
<UseDebugLibraries>true</UseDebugLibraries> |
|||
<PlatformToolset>v140</PlatformToolset> |
|||
<CharacterSet>Unicode</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Application</ConfigurationType> |
|||
<UseDebugLibraries>false</UseDebugLibraries> |
|||
<PlatformToolset>v140</PlatformToolset> |
|||
<WholeProgramOptimization>true</WholeProgramOptimization> |
|||
<CharacterSet>Unicode</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> |
|||
<ConfigurationType>Application</ConfigurationType> |
|||
<UseDebugLibraries>true</UseDebugLibraries> |
|||
<PlatformToolset>v140</PlatformToolset> |
|||
<CharacterSet>Unicode</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> |
|||
<ConfigurationType>Application</ConfigurationType> |
|||
<UseDebugLibraries>false</UseDebugLibraries> |
|||
<PlatformToolset>v140</PlatformToolset> |
|||
<WholeProgramOptimization>true</WholeProgramOptimization> |
|||
<CharacterSet>Unicode</CharacterSet> |
|||
</PropertyGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
|||
<ImportGroup Label="ExtensionSettings"> |
|||
</ImportGroup> |
|||
<ImportGroup Label="Shared"> |
|||
</ImportGroup> |
|||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
</ImportGroup> |
|||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
</ImportGroup> |
|||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
</ImportGroup> |
|||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
</ImportGroup> |
|||
<PropertyGroup Label="UserMacros" /> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
|||
<LinkIncremental>true</LinkIncremental> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
|||
<LinkIncremental>true</LinkIncremental> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
|||
<LinkIncremental>false</LinkIncremental> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
|||
<LinkIncremental>false</LinkIncremental> |
|||
</PropertyGroup> |
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
|||
<ClCompile> |
|||
<PrecompiledHeader> |
|||
</PrecompiledHeader> |
|||
<WarningLevel>Level3</WarningLevel> |
|||
<Optimization>Disabled</Optimization> |
|||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
|||
</ClCompile> |
|||
<Link> |
|||
<SubSystem>Windows</SubSystem> |
|||
<GenerateDebugInformation>true</GenerateDebugInformation> |
|||
</Link> |
|||
<PostBuildEvent> |
|||
<Command>editbin /subsystem:console $(OutDir)$(ProjectName).exe</Command> |
|||
</PostBuildEvent> |
|||
</ItemDefinitionGroup> |
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
|||
<ClCompile> |
|||
<PrecompiledHeader> |
|||
</PrecompiledHeader> |
|||
<WarningLevel>Level3</WarningLevel> |
|||
<Optimization>Disabled</Optimization> |
|||
<PreprocessorDefinitions>_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
|||
</ClCompile> |
|||
<Link> |
|||
<SubSystem>Windows</SubSystem> |
|||
<GenerateDebugInformation>true</GenerateDebugInformation> |
|||
</Link> |
|||
</ItemDefinitionGroup> |
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
|||
<ClCompile> |
|||
<WarningLevel>Level3</WarningLevel> |
|||
<PrecompiledHeader> |
|||
</PrecompiledHeader> |
|||
<Optimization>MaxSpeed</Optimization> |
|||
<FunctionLevelLinking>true</FunctionLevelLinking> |
|||
<IntrinsicFunctions>true</IntrinsicFunctions> |
|||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
|||
</ClCompile> |
|||
<Link> |
|||
<SubSystem>Windows</SubSystem> |
|||
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
|||
<OptimizeReferences>true</OptimizeReferences> |
|||
<GenerateDebugInformation>true</GenerateDebugInformation> |
|||
</Link> |
|||
</ItemDefinitionGroup> |
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
|||
<ClCompile> |
|||
<WarningLevel>Level3</WarningLevel> |
|||
<PrecompiledHeader> |
|||
</PrecompiledHeader> |
|||
<Optimization>MaxSpeed</Optimization> |
|||
<FunctionLevelLinking>true</FunctionLevelLinking> |
|||
<IntrinsicFunctions>true</IntrinsicFunctions> |
|||
<PreprocessorDefinitions>NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
|||
</ClCompile> |
|||
<Link> |
|||
<SubSystem>Windows</SubSystem> |
|||
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
|||
<OptimizeReferences>true</OptimizeReferences> |
|||
<GenerateDebugInformation>true</GenerateDebugInformation> |
|||
</Link> |
|||
</ItemDefinitionGroup> |
|||
<ItemGroup> |
|||
<ClCompile Include="main.cpp" /> |
|||
</ItemGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
|||
<ImportGroup Label="ExtensionTargets"> |
|||
</ImportGroup> |
|||
</Project> |
@ -0,0 +1,22 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<Filter Include="源文件"> |
|||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> |
|||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> |
|||
</Filter> |
|||
<Filter Include="头文件"> |
|||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> |
|||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> |
|||
</Filter> |
|||
<Filter Include="资源文件"> |
|||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> |
|||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> |
|||
</Filter> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<ClCompile Include="main.cpp"> |
|||
<Filter>源文件</Filter> |
|||
</ClCompile> |
|||
</ItemGroup> |
|||
</Project> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue