当前位置: 首页>>代码示例>>C++>>正文


C++ BScreen::GetModeList方法代码示例

本文整理汇总了C++中BScreen::GetModeList方法的典型用法代码示例。如果您正苦于以下问题:C++ BScreen::GetModeList方法的具体用法?C++ BScreen::GetModeList怎么用?C++ BScreen::GetModeList使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BScreen的用法示例。


在下文中一共展示了BScreen::GetModeList方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: sizeof

display_mode*
GlutGameMode::_FindMatchingMode()
{
	if (fWidth == -1 && fHeight == -1 && fPixelDepth == -1
		&& fRefreshRate == -1)
		// nothing to match!
		return NULL;

	if (!fModesList) {
		// Lazy retrieval of supported modes...
		BScreen screen;
		if (screen.GetModeList(&fModesList, &fModesCount) == B_OK) {
			// sort modes in decrease order (resolution, depth, frequency)
			qsort(fModesList, fModesCount, sizeof(display_mode), _CompareModes);
		} else {
			// bad luck, no modes can be retrieved!
			fModesList = NULL;
			fModesCount = 0;
		}
	}

	if (!fModesList)
		return NULL;

	float bestRefreshDiff = 999999;
	int bestMode = -1;
	for (uint32 i =0; i < fModesCount; i++) {

		printf("[%" B_PRId32 "]: %d x %d, %d Bpp, %d Hz\n", i,
			fModesList[i].virtual_width, fModesList[i].virtual_height,
			_GetModePixelDepth(&fModesList[i]),
			_GetModeRefreshRate(&fModesList[i]));

		if (fWidth > 0 && fModesList[i].virtual_width != fWidth)
			continue;

		if (fHeight > 0 && fModesList[i].virtual_height != fHeight)
			continue;

		if (fPixelDepth > 0
			&& _GetModePixelDepth(&fModesList[i]) != fPixelDepth)
			continue;

		float refreshDiff = fabs(_GetModeRefreshRate(&fModesList[i])
			- fRefreshRate);
		if (fRefreshRate > 0 && (refreshDiff > 0.006 * fRefreshRate)) {
			// not exactly the same, but maybe the best similar mode so far?
			if (refreshDiff < bestRefreshDiff) {
				bestRefreshDiff = refreshDiff;
				bestMode = i;
			}
			continue;
		}

		// Hey, this one match everything!
		return &fModesList[i];
	}

	if (bestMode == -1)
		return NULL;

	return &fModesList[bestMode];
}
开发者ID:looncraz,项目名称:haiku,代码行数:63,代码来源:glutGameMode.cpp


注:本文中的BScreen::GetModeList方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。