【图形学】实验一 OpenGL基本绘制

本文介绍在Windows环境下配置OpenGL,并使用现代OpenGL着色器绘制多种二维图形的方法。通过修改图形参数和颜色,实现了不同形状(如正方形、三角形、圆形和椭圆)的绘制,并展示了如何调整这些图形的位置、大小及颜色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验一 OpenGL基本绘制

实验内容

在Windows系统下完成OpenGL的环境配置,编译并成功运行你的OpenGL程序。在其中使用现代OpenGL中的着色器,绘制多个简单的二维图形,参考下图所示:

样图

具体内容包括:

1. OpenGL的环境配置

参考上机实验1.1的内容,完成Visual Studio 集成开发环境的安装,GLUT库与GLEW库的编译与配置,工程项目的搭建。

我用的是Clion,配置的CMakeLists.txt

# cmake version
cmake_minimum_required(VERSION 3.1)

# c++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# vcpkg
if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
  set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      CACHE STRING "")
endif()
if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET)
  set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "")
endif()

# project
project(main)

# target
aux_source_directory("./" PROJECT_SOURCES)
add_executable(main ${PROJECT_SOURCES})
target_include_directories(main PRIVATE include)

if(APPLE)
	# dependency
	include_directories(/System/Library/Frameworks)
	find_library(OpenGL_LIBRARY OpenGL)
	find_library(GLUT_LIBRARY GLUT)
	set(LIBS ${OpenGL_LIBRARY} ${GLUT_LIBRARY})
	# link
	target_link_libraries(main ${LIBS})
else()
	# dependency
	find_package(GLEW REQUIRED)
	find_package(GLUT REQUIRED)
	# link
	target_link_libraries(main PRIVATE GLUT::GLUT)
	target_link_libraries(main PRIVATE GLEW::GLEW)
endif(APPLE)

2. 绘制二维图形

参考实验1.2的内容,在此基础上,以参数化的方式绘制出不同的形状(正方形,三角形,圆形,椭圆),并与参考中图形的位置和大小有所区别。

实验步骤

在实验1.2中,修改三角形的方向:

源代码为:

vec2(cos(currentAngle), sin(currentAngle)) * scale + center

修改为:

vec2(sin(currentAngle), cos(currentAngle)) * scale + center;

如下图:
在这里插入图片描述
将单个空白的正方形改为多个黑白交替的正方形的组合:

  • 修改窗口上方的标题名称:

glutCreateWindow("学号_姓名_实验一");

 

  • 理解如何生成获取圆形/椭圆的点

  • 理解生成圆形/椭圆的函数

首先,解读generateEllipsePoints() 函数我们可以发现,当 verticalScale = 1.0时,我们可以构造圆形,当verticalScale 不等于1.0时,则可以绘制出椭圆。

  • 绘制圆形:

首先,调用generateEllipsePoints() 函数生成圆形的点的坐标和颜色;

随后在display函数中绘制圆形:

可以看到效果如下:

  • 绘制椭圆:

类似的,设置verticalScale = 0.5,我们先在init()函数中创建椭圆的100个点的坐标:

然后在display()函数中绘制:

结果如下:

  • 修改颜色:

嵌套的正方形修改为蓝白相间:

修改圆形的渐变色:

修改椭圆的颜色:

最终结果如下:

实验结果:

如下图所示,左图为增加了圆形和椭圆后的结果;右图为修改了颜色的结果。

程序运行后输出结果如下:(这部分信息的输出代码使用了自己添加的,使用了之前的代码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜饼同学

帮助别人,就是帮助自己,共勉。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值